2009-03-27 22 views
1

私たちは、Javaプロセスが瀕死の状態になっているという不思議な問題があります。Windowsのボックスで(java)プロセスの死を監視する最良の方法は何ですか?

アプリケーションはスタックトレースを行わず、ログに何も書き込まないので、プロセスはランダムに消滅します。これは頻繁に使用されるアプリケーションですが、この問題は月に1回しか発生しません。

現在、Process Monitorを使用していますが、他の提案も歓迎します。

編集:

それだ分散Javaアプリケーション、Oracleに接続し、社内のWebフレームワーク(はい、これはひどいアイデアですが、それは8年間実行されています)で、WebLogicで実行されています。

- メモリ不足

Brian Agnewによると、私たちのログはjava.lang.OutOfMemoryExceptionをキャッチします。

ログに書き込むとクラッシュしますか?私はJavaがこれまでにチャンスを得たとは思わないが、Javaが終了するのではなく、プロセスレベルで死が起こっている。

+1

OutOfMemoryExceptionに依存しないでください。いずれのログにも表示されます。 OOMEをスローするのに十分なメモリが不足していて、Javaプロセスが "静かに"死んでしまうかもしれません。 – ordnungswidrig

答えて

0

Linux NAGIOSサーバーを使用して、Windowsマシンとサービスの正常性を監視できます。見てください:nagios-monitoring-windows

Javaアプリでこのような問題が発生した場合は、テストしてデバッグする必要があります。アプリケーションはトレースなしで死ぬべきではありません!ログファイルを探してください!どのベンダーからアプリですか?それとも、それは自己書かれていますか?別のLog4J/Logger/Debug Levelを実行してみてください。このようなクラッシュの可能性を減らすために、サボテンなどでシステムを監視してください。ソフトウェアベンダーに相談してください。

enoghのメモリは利用できますか?アプリのメモリが不足している可能性がありますか?それはスタンドアロンのJavaプロセスか、Tomcat/jbossサーバーのJavaプロセスですか?

クラッシュタイムをログに書き留めましたか?それらを別のタイムスライスで表示しますか?または、彼らはほぼ時間循環的に見えるでしょうか?

+0

メモリ不足の場合、VMはクラッシュしません。それはOSから多くを割り当てることができず、java.lang.OutOfMemoryExceptionsをスローしますが、VMはそのままです –

2

ログファイル(stdout/stderr)と終了コード(どのようにして死に至ったかを示すはずです)をキャプチャするシェルスクリプトでこのファイルをラップできますか? JVMの終了時に、あなたはまた、VM自体が、それは、スタックトレースが含まれているhs_err_pid ...ファイルの後ろにマシンレベルのデバッグ情報を残しておきますクラッシュされている場合はWMI

を使用してマシンレベルの統計情報をキャプチャすることができます。それを使ってVMの問題を診断することができます。詳細は、this blog entryを参照してください。

問題がこのアプリケーションの動作に関連している場合は、JConsoleを参照する価値がありますが、問題の説明から、低レベルのVMの問題のように聞こえます。

(あなたのJavaバージョン番号などの最新のVMを使用していると仮定します。)

+0

ドライブ全体をスキャンしましたが、ファイル名に 'hs_err'が含まれていません。これは、VMがクラッシュしていないことを意味します。 WMIとJConsoleを見ていきます。ありがとうございます。 –

0

VisualVMの監視Javaアプリケーションが容易になり、新たなツールです。

https://visualvm.dev.java.net/description.html

「VisualVMのは、彼らが実行中のJavaアプリケーションに関する詳細な情報を提供するツールです。これは、直感的なグラフィカル・ユーザー・インターフェースを提供します。複数のJavaアプリケーションに関する情報を簡単に表示することができます。

関連する問題