<timeout 설정>
하나의 tomcat worker에 전달되어 서비스가 되도록 한다.
worker.list=tomcat worker.tomcat.type=ajp13 worker.tomcat.port={portnumber} #worker.tomcat.connect_timeout=1000 #worker.tomcat.prepost _timeout=1000 #worker.tomcat.socket_timeout=3 #worker.tomcat.reply_timeout=1000 |
Tomcat Instance의 GC time, 통신 속도, 트래픽을 고려해서 개발자가 mod_jk의 timeout설정을 해야 한다.
아래 Timeout 설정에 하나라도 만족이 되면, mod_jk는 해당 Tomcat Instance에 대해서 에러로 처리되고, 특정기간(recover_time : 60초)동안 소켓을 전달하지 않는다.
실제 정확한 Timeout은 연속 시도 값(reties 속성값) 과 연속 시도 대기 값(retry_interval 속성값)에 따라서 영향을 받는다.
현재 reties default 값은 2, retry_interval 값은 100ms이므로, 실제 Timeout 값은 아래와 같다.
실제 Timeout은 (2 * xxx_timeout ) + 100ms이다.
위 설정의 의미를 설명한다.
* worker.list=tomcat : worker는 tomcat worker 하나만 지정한다.
* worker.tomcat.type=ajp13 : 로 Apache Http 서버와 Tomcat 서버가 통신하는 protocol은 ajp 13이다.
* worker.tomcat.connect_timeout=1000 : jk와 Tomcat Instance 간 연결이 완료된 후, arj13 protocol에서의 cping request에 대한 cpong respone timeout 을 1000ms로 지정한다.
* worker.tomcat.prepost _timeout=1000 : jk와 Tomcat Instance 간의 요청이 전달이 되기전 arj13 protocol에서의 cping request에 대한 cpong respone timeout 을 1000ms로 지정한다.
* worker.tomcat.socket_timeout=3 : jk와 Tomcat Instance간의 응답 대기 시간이 3초 되면, timeout이 된다. 이 응답대기 시간은 TCP socket 내부적인 상태에 대한 timeout을 의미한다.
* worker.tomcat.reply_timeout= 1000 : jk와 Tomcat Instance 간의 의미있는 요청과 응답간의 시간에 대해서 1000ms timeout으로 지정된다.
내부 IDC에서는 방화벽을 쓰지 않기 때문에, socket_keepalive(디폴트 false)설정은 따로 지정하지 않는다.
connection_pool_timeout을 지정할 경우, Tomcat Instance에서의 connectionTimeout 설정과 같이 설정해야 한다.
<status 보기>
Apache Http 서버에서 status 정보를 볼 수 있듯이, mod_jk에서도 status 정보를 보여줄 수 있다. 이 설정은 서비스에는 영향을 주지 않는다.
workers.properties 파일 안에 Status worker를 추가한다.
worker.list=jkstatus worker.jkstatus.type=status |
conf 설정 파일에 jk mount 디렉토리를 지정하고, 외부로 노출되지 않도록 IP관리가 되어야 한다.
JkMount /jkmanager/* jkstatus <Location /jkmanager/> JkMount jkstatus Order deny,allow Deny from all Allow from 127.0.0.1 Allow from <내부 IP> </Location> |
http://127.0.0.1/jkmanager/ 로 접속하면 관련정보를 확인할 수 있다.
<fail on status>
worker.{application1}.fail_on_status=400 |
Tomcat Instance에서 보낸 Http response status code에 대해서 fail로 간주할 수 있도록 한다. Tomcat Instance에서 400 error발생시 fail이 동작될 수 있다.
<redirect>
worker.{application1}.redirect ={component6} worker.{application6}.port=8050 worker.{application6}.host=2.2.2.2 worker.{application6}.type=ajp13 worker.{application6}.activation=disable |
특정 상황에서 application1 worker가 application6 worker로 redirect가 가능하다.
activation 설정은 1.2.19부터 가능하다.
worker.properties 파일에 connection_pool_timeout 설정을 추가하여, fail 이후의 상황에 대해서 필요 없는 connection을 오랫동안 쓰지 않도록 할 수 있다. Apache Tomcat 서버의 server.xml의 connectionTimeout값과 동일하게 잡아야 한다.
worker.tomcat1.port=8050 worker.tomcat1.connection_pool_timeout=5 |
'Web service' 카테고리의 다른 글
[톰캣(Tomcat)] Fix threading issue in WebappClassLoader-tomcat 6.0.28 (0) | 2012.01.25 |
---|---|
Apache http 서버와 tomcat 서버간의 연결 유의사항 (0) | 2012.01.17 |
mod_jk 샘플/설명 (0) | 2012.01.17 |
Apache Http 서버의 VirtualHost 설정 (0) | 2012.01.17 |
Apache Http 서버의 ListenBackLog 지시자 (0) | 2012.01.17 |