2014-11-11 8 views
1

우리는 WAS 8.5.5.2 서버에서 CXF 2.7.11 애플리케이션을 실행 중입니다. 응용 프로그램에는 클래스로드 상위 속성이 있습니다. CXF 설명서의 지침에 따라 IBM JaxWS 엔진도 사용하지 않도록 설정했습니다.Websphere 8.5 TCP 채널이 최대 연결 수를 초과했습니다

응용 프로그램이 며칠 후, 우리는 예외와 TCP 채널이 꽉 차있을 것으로 보인다. WS 수업을 스택 추적에서

나는이 문제에 대한 CXF를 의심하지만 그건 또 다른 문제 응용 프로그램은 또한

REST 자원을 노출하는 스프링 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) 
+0

JVM의 힙이 매우 낮아서 메모리 부족의 부작용이있는 것처럼 보였습니다. 최대 힙 크기를 늘린 이후로 오류가 발생하지 않았습니다. – iesen

답변

0

이렇게 약간 까다 롭습니다. 내가이 말을하는 이유 때문에 까다 롭습니다

서버>는 WebSphere 애플리케이션 서버> SERVER_NAME> 웹 컨테이너> 웹 컨테이너 전송 체인> TCP 채널

: 당신은 단순히 콘솔에서 수행 할 수있는 연결의 수를 증가시킬 수있다 예를 들어 연결 유출과 같은보다 큰 기본 문제가있을 수 있습니다. 그러나 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 서비스 응용 프로그램에 없지만 일부 클라이언트 코드는 버그가 있습니다. 누출 된 클라이언트를 어떻게 확인할 수 있습니까? 또한 애플리케이션은 REST 리소스를 노출하는 Spring MVC 애플리케이션이다. – iesen

+0

@iesen netstat -an을 점검하고 몇 가지 기존 연결이 늘어나는 지 확인할 수있다. 어쩌면 당신은 클라이언트 IP를 볼 수있을 것이고 그것은 당신에게 단서를 줄 것입니다. – Gas

관련 문제