言語としてのJavaは、ユーザーがコードを開発できるように設計されており、ゆえにアプリケーションクラッシュという結果も導くことにもなります。 いかなるエラーも、投げられた例外をキャッチして適切に処理するというのは明白であるということです。
Java開発者やシステム管理者はご存知のとおり、Java仮想マシン(JVM)自身がクラッシュしうるというのが現実です。 その理由は、JVM自身もネイティブコードで書かれたプログラムであり、巨大で複雑なプログラムと同様に、JVM自身にもバグがあるからです。
いかなるプログラムと同様に、Javaがクラッシュすると、そのJavaアプリケーションも一緒に簡単に落ちます。 もしアプリケーションが基幹システムだったりすると、これは悲惨なことです。 アプリケーションがダウンした場合、ユーザーが利用不具合に気づいて連絡するまで、そのシステム停滞が通知されない可能性もあります。 さらにアプリケーションがダウンしているという現実を検知してから、システム管理者が修復するのに1、2時間の時間を要することもあります。
ソリューション |
||
この問題のソリューションは、Java動作について知り尽くしているモニタリング(監視)アプリケーションを導入し、 24時間365日、アプリケーションのモニタリング(監視)を安心して任せ、問題が発生したときに自動的に処置をしてくれることです。 Java Service Wrapperには、いくつかのモニタリング(監視)機能が含まれています。 その機能の1つが、JVMクラッシュを検知する機能です。 Wrapperは、JVMを定期的にモニタリング(監視)して、JVMクラッシュを即座に認識することができます。 クラッシュを検知すると、Wrapperは自動的にJVMを再起動して、 最短の停滞時間でシステムをリカバリー(回復)させることができます。 さらに、メール通知機能を設定すれば、 Wrapperからシステム管理者へ状況レポートをメール送信することができるため、 全てが元通りにリカバリー(回復)し、通常どおり動作していることを再確認することができます。 クラッシュ検知、リカバリー(回復)、メール通知の処理など、人員的な作業は不要で、全てはWrapperが自動処理してくれます。 クラッシュを検知すると、Wrapperはログファイルに次のような記録をとります:
上記のメッセージが少し複雑に見えますが、クラッシュについての情報を提供することがJVMの意図とする試みです。 JVMから一番低いレベルで、この出力がコンソールへダンプされるため、 いかなるJavaベースのログ化ツールでも、この情報を記録するのは不可能です。 Wrapperは、JVMのコンソール出力の100%をキャッチすることができ、 全てをログファイルに保存することができます。 Wrapperがなければ、アプリケーションがダウンしたままだけでなく、何が起きたのか、現状の把握もできないでしょう。 理想的には、クラッシュの原因を修正することですが、 多くのクラッシュ原因は、完全に有効なJavaコード内の曖昧な相互作用によるものであったり、 JVM自身が持つバグであったりするため、その問題を特定して回避策を検証するのに数週間や数ヶ月を要することもあります。 Wrapperは次のような様々な危機的な問題の検知に役立ちます: フリーズ、 デッドロック、 クラッシュ、 アプリケーションエラー、 メモリリーク、 JVM終了コードに応答するなど。 |
テクニカル概要 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wrapperのクラッシュ検知は、クラッシュがJVMやシステムに余計な負荷をかけないていないか確認することが可能になっています。 クラッシュが起きたり起きなかったりするので、その検知機能を無効にすることはできません。 しかしながら、クラッシュが起きた場合に、どのように処理をするのか、コントロールすることは可能です。 クラッシュを検知すると、Wrapperはまずシステムメモリやリソースが通常状態に落ち着くまで、 一瞬(デフォルト値で5秒間)待機します。 その後、何か設定済みの通知を送信した後、JVMインスタンスを新たに起動して、 最短の停滞時間でシステムをリカバリー(回復)させることができます。 下記で述べるように、もし必要であれば、この自動再起動の機能を無効にすることも可能です。
|
参照: クラッシュ |
Java Service Wrapper では、必要なコンフィギュレーション設定を含んだ完全なパッケージを提供しており、 それを活用することで、皆様の求めるニーズに合った動作を実現させることができます。 上記の例の他に、工夫次第で様々なことが実現可能となりますので、それぞれ個別にプロパティページをご覧ください。
|