WAS 小ワザ集

第31回:OutOfMemoryError発生時に自動でJVMを停止する方法

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: WAS 小ワザ集

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:WAS 小ワザ集

このシリーズの続きに乞うご期待。

OutOfMemoryErrorが発生後、Javaプロセスを再起動しないままにすると、動きが不安定になることがあるため、OOME発生時にはJavaプロセスを再起動する必要があります。ここではWAS上のJava EEアプリケーションがOutOfMemoryErrorを起こした場合、アプリケーション・サーバー(Javaプロセス)を確実に停止する設定をご紹介します。

  1. WASの管理コンソールにアクセスし、以下の設定ページを開きます。
    サーバー・タイプ→WebSphere Application Server→サーバー名→サーバー・インフラストラクチャー→Javaおよびプロセス管理→プロセス定義→Java仮想マシン
  2. 汎用JVM引数の設定を下記のように行います。
    (ア)UNIX/Linuxの場合
    • -Xdump:tool:events=systhrow,filter=java/lang/OutOfMemoryError,exec="kill -9 %pid"
    (イ)Windowsの場合
    • -Xdump:tool:events=systhrow,filter=java/lang/OutOfMemoryError,exec="taskkill /F /PID %pid"
    汎用JVM引数
    -Xdump:tool:events=systhrow,filter=java/lang/OutOfMemoryError,exec="kill -9 %pid"
  3. WASを再起動して設定を反映します。
  4. OutOfMemoryError発生時、上記設定によりアプリケーション・サーバーが停止された際、自動で再起動させたい場合の設定はこちらをご参照ください。
    WAS 小ワザ集: 第19回:アプリケーション・サーバーの自動起動

なお、OutOfMemoryErrorが発生すると,デフォルトでcore/heapダンプ/javacoreの出力が設定されています。今回追加で設定したものは、priorityが0で設定されるため、それらが実行された後に実行されます。これらを上書きしたい場合は、高いpriorityで設定してください。

例)2の設定のプライオリティを一番高くする
--Xdump:tool:events=systhrow,filter=java/lang/OutOfMemoryError,exec="kill -9 %pid",priority=999

また、デフォルトで設定されているダンプ・オプションの一覧を確認するには、-Xdump:whatオプションを指定して、JVMを起動してください。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=WebSphere
ArticleID=955514
ArticleTitle=WAS 小ワザ集: 第31回:OutOfMemoryError発生時に自動でJVMを停止する方法
publish-date=12032013