連携する仕組みで、
The timeout specified has expired: ajp_ilink_receive() can't receive header
(120006)APR does not understand this error code: proxy: read response failed from
ajp_read_header: ajp_ilink_receive failed
こんなタイムアウトエラーが発生しまして、ブラウザ上は503エラーとなるのですが、発生タイミングが1時間程度アクセスを行わないと発生して、エラー後は正常にアクセスできるようになるという状況。
エラーメッセージからGoogle先生に問い合わせるとmod_proxy_ajpのバグみたいな情報があり、mod_jkに切り替えないと直らないような情報が出てくる。まあ、それは最終手段として別の可能性を調査しました。
結論を言うと、今回はDMZ-LAN間にあるFWによって無通信間隔が監視されていて、Apache-Tomcat間のコネクションプールが自動的に切断されていることによるものでした。
切り分け方としては、先ず以下の"disablereuse=On"(http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html)オプションを付けて、コネクションプール(常時接続)をOFFにしました。
ProxyPass ajp://192.168.24.XXX:8009/ disablereuse=On
ProxyPassReverse ajp://192.168.24.XXX:8009/
これで現象は再現しなくなったので、コネクションプールが原因となっていることが切り分けられました。まあ、とりあえずこれで本対応でもいいのですが、多分以下のオプションを使用してもOKでしょう。
ProxyPass ajp://192.168.24.XXX:8009/ keepalive=On
ProxyPassReverse ajp://192.168.24.XXX:8009/