2014-11-11 3 views
1

Мы запускаем приложение CXF 2.7.11 на сервере WAS 8.5.5.2. Приложение имеет свойство loadloads parentload last, и мы отключили механизм IBM JaxWS, как указано в документации CXF.Websphere 8.5 TCP-канал превысил максимальное количество открытых подключений

Приложение работает отлично через пару дней, после чего мы получаем ниже исключения, и канал TCP кажется полным.

Из трассировки стека, которые имеют Ws классы я подозреваю CXF для этой проблемы, но это может быть результатом другой проблемы

Приложение также приложение Spring MVC, который предоставляет REST ресурсы ..

[10.11.2014 05:00:20:887 EET] 00000049 TCPChannel W TCPC0004W: TCP Channel TCP_2 has exceeded the maximum number of open connections 20000. 
[10.11.2014 05:02:16:343 EET] 0000023f SSLHandshakeE E SSLC0008E: Unable to initialize SSL connection. Unauthorized access was denied or security settings have expired. Exception is javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 
    at com.ibm.jsse2.b.a(b.java:56) 
    at com.ibm.jsse2.nc.a(nc.java:90) 
    at com.ibm.jsse2.nc.unwrap(nc.java:292) 
    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:26) 
    at com.ibm.ws.ssl.channel.impl.SSLConnectionLink.readyInbound(SSLConnectionLink.java:535) 
    at com.ibm.ws.ssl.channel.impl.SSLConnectionLink.ready(SSLConnectionLink.java:295) 
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) 
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) 
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175) 
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) 
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) 
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) 
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905) 
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1864) 
+0

Хорошо, что куча для JVM была очень низкой, и это может быть побочным эффектом низкой памяти. Мы не видели ошибки с увеличением максимального размера кучи. – iesen

ответ

0

Так что это немного сложно. Вы можете просто увеличить количество соединений, которые можно сделать из консоли:

Серверы> Серверы WebSphere Application> SERVER_NAME> Веб-контейнер> веб-контейнер транспортных цепочек> TCP CHANNEL

Поэтому я сказал, что это сложно, потому что может возникнуть большая проблема, например утечка соединения. Однако, чтобы дойти до того, что вы используете 20K-соединения, довольно много, но я не знаю, сколько нагрузки вы ожидаете на этом сервере. Если это просто тестовая среда, вам нужно начать изучать возможную утечку соединения.

Unable to initialize SSL connection. Unauthorized access was denied or security settings have expired. Exception is javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? 

Эта часть сообщения об ошибке означает, что для SSL-порта выполняются односторонние не-SSL-соединения. Вы также можете взглянуть на это и посмотреть, кто выполняет эти вызовы, потому что это накладные расходы.

+0

Нагрузка не является высокой для этой услуги, не так много, как одновременные соединения 20K. Журналы ошибок SSL могут быть побочным эффектом базовой утечки. – iesen

+0

Тогда это определенно утечка – wFateem

0

Использование 20000 соединений чрезвычайно высокое. Вероятно, у вас есть ошибки в вашем клиентском коде, который вызывает утечку соединений. Если вы используете CXF в клиенте, вы можете взглянуть на этот https://issues.apache.org/jira/browse/CXF-5144.

Увеличение количества подключений не решит вашу проблему, оно просто задержит его.

+0

Говорят, что она исправлена ​​на 2.7.7, но я также попытаюсь обновиться до 3.0.2 – iesen

+0

Ну, вы говорите, что ошибка не входит в мое сервисное приложение CXF, но некоторый код клиента глючит. Как я могу определить протекающий клиент? Приложение также является приложением Spring MVC, которое предоставляет ресурсы REST – iesen

+0

@iesen. Вы можете проверить netstat -an и посмотреть, не увидите ли вы, что некоторые установленные соединения растут. Возможно, вы сможете увидеть IP-адрес клиента, и это даст вам некоторые подсказки. – Gas

Смежные вопросы