wrapper.jvm_kill.delay プロパティ

対応バージョン :3.5.6
対応エディション :プロフェッショナル版スタンダード版 (未対応)コミュニティー版 (未対応)
対応プラットフォーム :WindowsMac OSXLinuxIBM AIXFreeBSDHP-UXSolarisIBM z/OSIBM z/Linux

このプロパティでは、 jvm_kill]イベントが 発生してから、実際にJVMが強制終了されるまでの、ポーズ(一時停止)する時間数(秒数)を設定します。

デフォルト値は「0 (ゼロ)」です。

設定例:
wrapper.jvm_kill.delay=0

WrapperがJVMを強制終了しようとするとき、一部のアプリケーションでは、 終了する前にJVMに対して何か処理をする外部コマンドを実行したい場合もあるでしょう。 その場合には、[jvm_kill]イベントと イベントコマンドの1つ[wrapper.event.<event_name>.command.argv.<n>プロパティ を使って実現することができます。コマンドを実行して動作を継続する前に、そのコマンドを確実に遂行させるために [wrapper.event.<event_name>.command.block]プロパティ の設定が可能であっても、一部のアプリケーションでは、さらに追加時間を必要とするタイミングの問題もあります。

内部的な[wrapper.request_thread_dump_on_failed_jvm_exit] プロパティを使い、JVMを強制終了する前にスレッドダンプをリクエストするように、Wrapperを設定することが可能です。 しかしながら、例のとおり、 [jvm_kill]イベントに応答するコマンドを実行することでも実現可能です。

UNIX:

UNIX上で、「SIGQUIT」シグナルをJVMプロセスへ送信することで、 スレッドダンプを生成することもできますが、 JVMプロセスが終了される前に[jvm_kill]イベントが即座に発生します。 つまり、これはシグナルが送られたときには、JVMが既に終了する準備が整っていることが好ましいでしょう。 このタイミング問題の回避策として、Wrapperに設定を加え、 外部コマンドを実行してから、実際にWrapperがJVMを強制終了する前に、5秒の遅延を入れています。

設定例:(UNIXの例)
wrapper.jvm_kill.delay=5
wrapper.event.jvm_kill.command.loglevel=INFO
wrapper.event.jvm_kill.command.argv.1=kill
wrapper.event.jvm_kill.command.argv.2=-SIGQUIT
wrapper.event.jvm_kill.command.argv.3=%WRAPPER_EVENT_JVM_PID%

Windows:

これは、また Windows上でサービスとして動作しているときでも起きるはずです。 次の例では、サービス名「MyApp」を想定して、「255」は、 [wrapper.thread_dump_control_code] プロパティで指定した値に一致している必要があります。

設定例:(Windowsの例)
wrapper.jvm_kill.delay=5
wrapper.event.jvm_kill.command.loglevel=INFO
wrapper.event.jvm_kill.command.argv.1=sc
wrapper.event.jvm_kill.command.argv.2=control
wrapper.event.jvm_kill.command.argv.3="MyApp"
wrapper.event.jvm_kill.command.argv.4=255

参照: 遅延