本番環境では、Java 1.6.0_21よりApache Tomcat 5.5.30の複数のインスタンスを実行するCentOS 5 Linuxボックスが用意されています。各Tomcatは、Postgres 9.1 RDBMSからデータを取り出し、HTML/PDF/etcレポートを生成するJava EE WebAppをホストしています。
トリガーがまだ決定されていないため、Javaプロセスの1つが、マシンがメモリをHDにページングするまでRAMの使用量を(数十ギガに)増加させ、サーバー全体を立っている。 私は通常JProbeを使用して、どのオブジェクトがすべてのRAMを消費しているかを監視しますが、サーバーはヘッドレスLinuxインストールであるため、これはオプションではありません。
一定の間隔で最も多くのメモリを消費するJavaオブジェクトをログに記録するヘッドレス(CLI)ツールはありますか?それは問題を診断する最善の方法ですか?実稼働のLinuxボックスでメモリ関連のJavaクラッシュを診断する方法
UPDATE:以下受け取ったフィードバックを使用して は、私は問題の一部は、我々は実際のクラッシュを取得していないが、全体のマシンまでのHDへのプロセスだけでページのRAMが応答しなくなることがあることに気づきました。これに対する1つの解決策(私は考えました)は、Javaが使用できる最大RAMを数GBに制限する-Xmxパラメータを設定することです。残念ながら、JVMはこの設定を無視していて、クラッシュすることなく望みどおりに消費しているようです。限度を強制する別の方法がありますか?
JVMとOSのバージョンを教えてもらえますか? –
また、ps -el | grep javaを実行し、プロセスに渡される最終的なパラメータを通知します。 –