13

私の仕事では、再現が難しい OOM の問題が発生しています。または、より正確には、あるシステムで再現するのは非常に簡単で、そのシステムは使用できなくなりますが、同じ入力が与えられた場合、他の場所で再現するのは困難です。

アプリケーションは、サービス ラッパーを使用してサービスとして実行されています。OOM でヒープ ダンプ ファイルを出力するオプションを使用して起動するように構成を変更することができましたが、残念ながら、ファイルを書き込んだときにサービス ラッパーがタイムアウトし、プロセスが強制終了されたため、ファイルが切り捨てられました。これは、最大メモリが 1GB に設定されており、hprof ファイルが 700MB と小さいため、OOM のヒープ全体には小さすぎるため、すぐにわかります。

Java プロセスがヒープを書き出すためにより長い時間を与えるようにラッパーを追加で構成するには、多くの手間がかかりますが、次の 2 つのオプションを使用してこれを追求しています。

wrapper.jvm_exit.timeout=600
wrapper.shutdown.timeout=600

問題は、私が持っている切り捨てられた hprof ファイルでできることは何かありますか? Eclipse MAT がそれらを窒息させます。Jhat はそれらをロードしているように見えますが、サイズ 0 の Java.Object の 3 つのインスタンスしか表示されず、他には何も表示されません。YourKit を試してみましたが、oids ファイルを書き込めませんでした。

これらのファイルには、有用でアクセス可能な情報が含まれている必要があるように思えます。そこにあるものを読み取ることができるツールはありますか?

お時間をいただきありがとうございます!

4

2 に答える 2