Java自身は、オペレーションシステムに複雑な形でアプローチしてくる非常に大きなプログラムです。 通常はかなり安定しているものの、ときにはクラッシュやフリーズなどの問題があることもあります。 Javaアプリケーションがフリーズすると、それを検知して回復することは困難です。 これは、そのJavaプロセス自体が依然としてメモリに存在しており、 多くの一般的なモニタリング(監視)アプリケーションでは応答停止を検知できないこともあります。
JVMのフリーズが発生すると、通常は、ユーザーあるいは、 そのアプリケーションと通信している他のシステムが通信停滞を検知して、そのフリーズの事実に気づきます。 一旦、問題が発覚すると、ときにはユーザーからのクレームにもなり、 システム管理者はサーバーへ接続して、JVMのフリーズを解き、アプリケーションを再起動させます。 もしシステム管理者が不在の場合には、この処理方法では、回復までに数時間を要することもあります。
ソリューション |
||
この問題のソリューションは、Java動作について知り尽くしているモニタリング(監視)アプリケーションを導入し、 24時間365日、アプリケーションのモニタリング(監視)を安心して任せ、問題が発生したときに自動的に処置をしてくれることです。 Java Service Wrapperには、いくつかのモニタリング(監視)機能を備えています。 その機能の1つが、JVMフリーズ検知機能です。 Java Service Wrapperには、JVMフリーズを判断する高度なロジックが組み込まれており、 定期的にJVMをモニタリング(監視)します。 JVMのフリーズを検知すると、自動的にJVMを再起動させ、 最短の停滞時間でシステムをリカバリー(回復)させることができます。 さらに、メール通知機能を設定すれば、 Wrapperからシステム管理者へ状況レポートをメール送信することができるため、 全てが元通りにリカバリー(回復)し、通常どおり動作していることを再確認することができます。 Java Service Wrapperは、 一定間隔でJVMプロセスにping送信して(デフォルト値で5秒毎)、 JVMの応答を確認しています。 もし設定した時間内(デフォルト値で30秒以内)に応答がなかった場合、「JVMがフリーズしている」と判断します。 またWrapperは、誤検出が最小限になるように全体的なシステム負荷についても考慮しています。 JVMフリーズを検知すると、Wrapperはログファイルに次のような記録をとります:
Wrapperは次のような様々な危機的な問題の検知に役立ちます: フリーズや デッドロック、 クラッシュ、 アプリケーションエラー、 メモリリーク、 JVM終了コードに応答するなど。 |
テクニカル概要 |
||||||||||||||||||||||||||||||||||||||||||||
フリーズ検知は、デフォルトで有効になっています。
5秒ごとにJVMにping送信して、
30秒以内に応答がないとタイムアウト(時間切れ)となり、
フリーズしているものと判断します。それらのインターバル(一定間隔)時間も柔軟に設定可能です。
もし、[wrapper.
|
参照:コンフィギュレーション プロパティ |