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

 View Only
Wed February 23, 2022 06:50 PM

転載者注:以下の内容はWAS Fullプロファイル/WAS Traditionalランタイムについての情報です。

オリジナル文章公開日:2013年12月3日

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を再起動して設定を反映します。

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を起動してください。

→ WAS 小ワザ集:目次ページにもどる

Statistics
0 Favorited
12 Views
0 Files
0 Shares
0 Downloads