1

我们在 WAS 8.5.5.2 服务器上运行 CXF 2.7.11 应用程序。应用程序具有 classloading parent last 属性,我们也按照 CXF 文档的说明禁用了 IBM JaxWS 引擎。

应用程序运行良好几天,之后我们得到以下异常并且 TCP 通道似乎已满。

从具有 ws 类的堆栈跟踪中,我怀疑 CXF 存在此问题,但这可能是另一个问题的结果

该应用程序也是一个公开 REST 资源的 Spring MVC 应用程序。

[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)
4

2 回答 2

0

使用 20000 个连接是非常高的。您的客户端代码中可能存在泄漏连接的错误。如果您在客户端中使用 CXF,您可以查看此https://issues.apache.org/jira/browse/CXF-5144

增加连接数不会解决您的问题,只会延迟它。

于 2014-11-11T19:55:21.470 回答
0

所以这有点棘手。您可以简单地增加可以从控制台完成的连接数:

服务器 > WebSphere Application Servers > SERVER_NAME > web 容器 > web 容器传输链 > 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 连接。您可能还想看一下,看看是谁在打这些电话,因为这是开销。

于 2014-11-11T12:57:54.633 回答