Apache Tomact5.5 連携のチューニング(AJP1.3)

Apache Tomact5.5 連携のチューニングを行いました。

PB-Lab のApache - Tomcat の連携部分でコネクションキューがタイムアウトせずにたまっていたようです。
# netstat -an | grep 8009
でタイムアウトしていないコネクションが溜まっていました。
早速設定を確認し/opt/java/tomcat5.5/conf/server/xml を修正しました

--------------------------
server.xml
○修正前

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />

enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

--------------------------
○修正後
maxThreads="250" minSpareThreads="25" maxSpareThreads="50"
enableLookups="false" redirectPort="8443" acceptCount="20"
connectionTimeout="20000" disableUploadTimeout="true" />

enableLookups="false" redirectPort="8443" protocol="AJP/1.3"
connectionTimeout="21000"
keepAliveTimeout="100"
maxThreads="150"
debug="5"
/>

AJP/1.3 の Connecter に connectionTimeout と keepAliveTimeout を設定してみた。
keepAliveTimeout が設定されていない場合は connectionTimeout と同じ間隔でコネクションを保持してしまうので、それよりも安全な短い時間を設定する。

そもそも危ないのは、connectionTimeout が未設定の場合、0(無限)と動作することが問題だろう。

その他に注意することは、Tomcat 本体のConnectoer(port="8080") の maxThreads を Apache のスレッド MaxClients よりも大きくすることか。

上記設定に変更したところ、jk-8009(AJP/1.3) コネクタで無駄なコネクションが残ることは無くなり、サーバーで固まることは基本的に無くなった。一安心。