当サイトの稼働環境(CentOS 6.2 64bit)では、Apache Tomcat 6.0.24をOracle JDK 1.7.0_05で動作させていたのですが、7月1日の正午前から、突如、3コアのうち、1コアの50%程度のCPUを常時消費するようになりました。Tomcatを起動するだけで、Webアクセスしなくても、何かがProcessを喰い続けています。なんで?
調べてみると、
・Webアプリを全てundeployして再起動しても、状況変わらず。
・tomcat6を再インストール(yum remove、yum install)しても、状況変わらず。
・JavaVMを、GCJ 1.5.0に切り替えると、上記のような問題は解消される。(が、GCJだとAPI不足で一部のアプリが動かない)
・JavaVMを、OpenJDK 1.6.0に切り替えても、Oracle JDK 1.7.0_05と同じ状況。
・OpenJDK1.6、Oracle JDK1.7だと、logging.propertiesのcatalina.log, localhost.logログが出力されない。ファイルは生成されるが、0 byteのまま。catalina.outが正常出力される。
・OpenJDK1.6、Oracle JDK1.7だと、"service stop"時に、30秒のタイムアウトまで、プロセスが正常に終了しないことが多い。(強制終了している?)
等々、いろいろ問題があるようです。
とりあえず、アプリ動作に支障は無いのですけど、原因不明のまま。
※ ちなみに、"alternatives –config java"コマンドで、JavaVMを切り替える手法は、知りませんでした…。最新のLinuxから遠のいて久しいなぁ…。Rubyの"rvm"みたいですね。
[追伸 2012/07/05] もうRPMだけで構成するのは諦めて、
1) 各種JavaVM全てとtomcat6を yum remove し、
2) Oracle JDK 1.7.0_05をrpm ivhし、
3) apache-tomcat-7.0.28 をtarから展開して
4) OS再起動
したら、tomcatを実行しても、CPUを喰わなくなった。
というか、最後の「OS再起動」が効いたのかもしれない。なんじゃそれ? とにかく、問題解消!