Tomcatが無反応に

ウチの会社が作ったWebアプリで、運用環境で稀に(たまに頻繁に)Tomcatがフリーズするらしく、
その調査を暇を持て余している俺が頼まれた。


スレッドダンプを取得してみると(俺が取ったんじゃないけど)、
maxThreadsを超過しました、みたいなメッセージが出ている。
平時はTomcatのmaxThreadsの1/3程度のスレッド数しかないが、
不意に急上昇しはじめ、途端にmaxThreadsを超えてしまうようだ。
ユーザのアクセスが集中したとか、そういう類ではないらしい。


他所様の運用環境且つ他人の案件なんで、色々自由に動くこともできず、
まだスレッドが急増する理由は今のところさっぱり分からないのだが、
Tomcatが無反応になってしまう理由は、何やらそれらしい事案を見つけた。


【真夏の夜のミステリー】Tomcatを殺したのは誰だ? (1/3):現場から学ぶWebアプリ開発のトラブルハック(6) - @IT


設定ファイル貰ってみたら、案の定、
Apacheの最大コネクション数がTomcatの最大スレッド数を上回っていた。
Apache - Tomcat間でのロードバランシングはしてないので、
普通に Apacheのコネクション数 ≦ Tomcatのスレッド数 としておけば良さげかな。


まぁ、スレッドがたまる原因は分かってないので、根本解決には至っていない。
もうしばらくかかりそうだ。