私はかなり長い間カスタムアプリケーションでJava Serviceラッパーを使用してきましたが、うまくいきました。ここ数日でアプリケーションを新しいバージョンに更新して以来、JVMはハングアップを開始し、ラッパーはこれをログに出力します。 JVMがハングアップしているように見えます:JVMからの信号待ちでタイムアウトしました。Javaがハングしているようだ
その後、自動的にJVMを終了し、アプリケーションを再起動します。これは約10時間の実行後に発生し、デバッグが難しくなります。
私が行った変更を見ていきますが、このタイプの問題の原因と思われる大きな変更はありませんでした。
私は何が起こっているのかを試してみることができますか?アプリケーションからのデバッグメッセージは、何も興味深いものではありません。 JVMがちょうどクラッシュすると、通常はダンプが作成され、デバッグに役立ちますが、ハングしているのでダンプを作成しません。私がそれを再起動しないようにすると、サービスを自動的に再起動する前にJVMから有用な情報を得るためにできることは何ですか?
JVMが典型的なプログラミングエラーからハングしてはいけないと思う。これまでにJVMをハングさせる原因は何ですか?
Linux RHEL4、Java 1.6.0、Intel 32ビット。私はスレッドとメモリ使用量の数を監視しています。これまでのところ、どちらもあまり使用していません。スレッドはあまり使わない。アプリケーションの開始時にいくつか起動して、数分おきに処理するものがあるかどうかを調べます。 –
10時間はどれくらい一貫していますか?実際には、いくつかの可能性があります:資源の枯渇、またはランダムなデッドロック/遅延。どのようなアプリケーションですか? –
一貫性がありません。これまでは3回しか起こっていません。実際には、平均値が10時間を少し上回っているように見えます。それは12,14、および19時に起こった。試してやろうとしているのは、自動再起動しないように設定されているので、状況が発生したら少し調べることができます。 –