Keep-Alive 헤더가 Tomcat 5.5 http 커넥터에서 전송되지 않습니까?

Keep-Alive 헤더가 Tomcat 5.5 http 커넥터에서 전송되지 않습니까?

현재 우리는 하드웨어 로드 밸런서를 사용하고 있는데, 이는 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=YHTTP/1.0이므로 전송되지 않는다고 가정합니다 . 으로톰캣 문서즉, 귀하의 경우에는 로드 밸런서와 tomcat 양쪽의 시간 초과 값을 동기화해야 합니다.

관련 정보