Apache socket_timeout , reply_timeout 설정
socket_timeout & reply_timeout ERROR CODE
· - socket_timeout 발생시 access log에 502(Bad GateWay)이 발생.
· - reply_timeout 발상시 access log에 504(Gateway Time-out) 이 발생.
Apache, Tomcat 의 Timeout 관련 테스트
1. mod_jk(worker.properties) 의 socket_timeout 옵션
ex) socket_timeout 을 10초로 설정
worker.worker1.socket_timeout=10
worker.worker1. retries=1
테스트 결과 :
◾클라이언트 요청 이후 10초 이상 응답이 지연되면 클라이언트로 502 리턴 (retries 설정 1 기준)
◾비정상 응답이라 하더라도 클라이언트에게 빠르게 응답을 줄 수 있고, 클라이언트<->웹서버 부하에 대한 timeout 컨트롤을 할 수 있다.
◾다만 WAS의 부하와는 무관한 설정으로, WAS 행업에는 도움이 되지 않는다.
2. Tomcat(server.xml) 의 Stuck Thread Detection Valve 설정
ex) threshold, interruptThreadThreshold 를 각각 5초로 설정
<Valve className="org.apache.catalina.valves.StuckThreadDetectionValve" threshold="5" interruptThreadThreshold=”5” />
테스트 결과 :
◾클라이언트 요청 이후 5초 이상 응답이 지연되면 클라이언트로 500 리턴, 그리고 WAS의 work thread 역시 Exception과 함께 free 상태로 전환한다.
◾클라이언트 & Web & WAS 전체 부하에 대한 timeout 컨트롤을 할 수 있어 효과적이지만, 비교적 Tomcat 최신 버전(7.0.55 이상) 의 기능이고, 운영 상황에서 적용 사례를 찾기 힘들어 side effect 예측 어려움 (* 특이사항으로 jsp, JAVA 로직 안에서 재귀적으로 생성한 thread 동작에 대해서는 Tomcat이 컨트롤하지 못한다.)