2013-04-11 2 views
2

tomcat 5.5에서 tomcat 7.0.37로 마이그레이션 할 때 이상한 동작이 발생했습니다. 나는 표준 HTTPS 커넥터 사용tomcat 7 - 성능 : 커넥터 플래그 connectionTimeout

플래그 connectionTimeout="-1"가 설정되어
<Connector address="x.x.x.x" port="9090" scheme="https" secure="true" 
    clientAuth="false" sslProtocol="TLS" SSLEnabled="true" 
    ciphers="SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA, 
     TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA, 
     TLS_DHE_DSS_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA, 
     SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, 
     SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA" 
    URIEncoding="UTF-8" keystorePass="x" keystoreFile="x" 
    connectionTimeout="-1" maxPostSize="-1" /> 

, 톰캣에 대한 모든 요청이 일정하게 20 % -30 %의 프로세서 사용량을 일으키는 원인이된다. 따라서 모든 유형의 자원 (간단한 html 페이지, jar 파일)에 대해 5 요청을 생성 한 후 프로세서 사용량은 100 %에 도달합니다.

connectionTimeout="-1" 플래그를 제거하면이 문제가 발생하지 않습니다. 표준 Tomcat 7 구성을 사용합니다.

누군가 무슨 일이 일어 났는지 설명 할 수 있습니까?

답변

1

이 부분을 파악하기 위해 최소 1 분이 걸렸습니다. 나는 또한이 문제를 재현 할 수 있었다. http 커넥터의 경우 documentation을 봅니다. -1로 설정할 수 있다고 말하지는 않지만 말할 수는 없다고 말하지는 않습니다. 그래서 코드를 짚어 보았습니다. 코드에서 나는

if (soTimeout != null && soTimeout.intValue() >= 0) 
    socket.setSoTimeout(soTimeout.intValue()); 

가 그래서 기반으로한다는 -1 설정되지지고 않습니다 및 소켓 자바 class 기본 설정을 사용하는 아래 (soTimeout =은 ConnectionTimeout) 발견했다.

당신은 무한 시간 제한 (이 당신에게 모든 종류의 문제를 가져올 수있는 내가 권하고 싶지 않다.)

가 편집 # 1

이에 좀 더 깊이 보였 0으로 설정하고자하는 경우 그리고 그것은 내가보고하고 7.0.42 이후에있을 것 인 tomcat에 bug가있는 것처럼 보인다.