Apache Http 서버의 전체 connection pool 개수가 Tomcat Instance connector thread 의 개수를 초과해서는 안된다. 초과시, 일부 요청은 새로 ajp connection을 연결을 시도하기 위해서 hang 상태에 걸릴 수 있다.

전체 Tomcat Instance의 connection thread 개수는 다음과 같아야 한다.

• Apache Http 서버가 prefork 방식일 때의 connection pool은 MaxClients을 의미한다.

• Apache Http 서버가 worker 방식일 때의 connection pool은 (MaxClients / ThreadsPerChild) * connection _pool_size 을 의미한다.

Tomcat Instance 의 Connecotr가 AJP 이기 때문에 connection의 개수는 thread의 개수로 이어지기 때문에 maxThreads 값과 연관되어 진다. 성능 테스트를 통해서 적절한 TPS 값을 찾고 이에 맞게 maxThreads 숫자를 찾아야 한다. 또한 load balance 되는 worker들의 maxThreads 값의 합을 통해서 Apache Http 서버의 MaxClients 값을 산출해야 한다.

prefork방식일 때는 아래와 같이 대략 맞추는 것이 좋다.

Tomcat maxThreads 값 * load balanced 개수 (연동되는 Tomcat instance 개수) = Apache Http MaxClients * 1.1 (또는 1.2)

1.1 또는 1.2 의 수를 넣어주는 것은 mod_jk의 load balance에 대한 조정(variation) 값이다.

Posted by '김용환'
,