현재 우리는 하드웨어 로드 밸런서를 사용하고 있는데, 이는 Apache로 이동한 다음 AJP 커넥터를 통해 Tomcat 5.5로 이동합니다.
우리는 여러 가지 이유로 아파치를 버리기로 결정했습니다. 현재 시스템에서는 어떤 이점도 제공하지 않습니다.
그러나 이 작업을 수행할 때 전송된 헤더를 보면 tomcat http 커넥터를 사용할 때 "Keep-Alive: timeout=15 max=96" 헤더가 전송되지 않습니다.
흥미롭게도 tomcat5.5의 "keepalivetimeout"에 대한 문서는 찾을 수 없지만 tomcat6의 경우에는 찾을 수 있습니다. 하지만 tomcat5.5가 이 설정을 지원하지 않는다는 증거도 찾을 수 없습니다.
내 커넥터는 다음과 같습니다.
<Connector port="8090" maxHttpHeaderSize="8192"
maxThreads="400" minSpareThreads="150" maxSpareThreads="300"
enableLookups="false"
connectionTimeout="2" maxKeepAliveRequests="400" disableUploadTimeout="true" />
그래서; Tomcat 5.5에서 http 커넥터를 사용하고 이 헤더 항목을 강제로 전송하는 경우 keepalive 시간 초과를 지정할 수 있는 방법이 있습니까?
명확하게 말하면 서버에서 다시 볼 수 있는 정확한 헤더 항목은 Apache에서 다음과 같습니다.
Keep-Alive: timeout=2, max=100
그러나 바람둥이/코요테에서는 아무것도 없습니다.
나는 이것을 좀 더 살펴보았는데 Keep-Alive 헤더 항목이 실제로 중요하다고 생각하지 않습니다. 문제는 tomcat 5.5 http 커넥터에서 연결 유지가 지원되지 않는 것 같습니다. 그들은 tomcat6(+java 6)에서 작동하는 것 같습니다.
고마워요, 댄
답변1
당신은 올바른 방향으로 가고 있었습니다. Tomcat 5.5에서 ConnectionTimeout은 Tomcat 6.0의 keepalivetimeout과 동일합니다. 하지만 Tomcat 값은 밀리초 단위이고 Apache 값은 초 단위이므로 값을 2에서 2000으로 변경해야 합니다.
Tomcat이 보내는 http 헤더에 시간 초과 값이 표시되지 않으므로 당신 말이 맞습니다. 그러나 시간 초과는 서버 측에서 조치를 취합니다. Tomcat 커넥터는 HTTP/1.1이고 Kee-Alive: timeout=X, max=Y
HTTP/1.0이므로 전송되지 않는다고 가정합니다 . 으로톰캣 문서즉, 귀하의 경우에는 로드 밸런서와 tomcat 양쪽의 시간 초과 값을 동기화해야 합니다.