<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

신고
Posted by 김용환 '김용환'
TAG