wrapper.jvm_cleanup.timeout プロパティ

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

警告

このプロパティの説明を読まずに、パラメータを変更することは絶対にしないで下さい。 設定を間違えると、期待どおりに動作せず、Wrapperの動作不良や不具合の原因となります。

このプロパティには、JVMが完全にシャットダウンされた後、 新しいJVMを開始するか、あるいは、Wrapperをシャットダウンするか、 どちらかのプロセスを開始する前に、Wrapperがクリーンアップを実行する最大時間(秒数)を設定します。 プロパティ値を「0 (ゼロ)」に設定すると、タイムアウト(時間切れ)は発生しません。

デフォルト値は「10秒」です。

設定例:(10秒)
wrapper.jvm_cleanup.timeout=10

クリーンアッププロセスは、デタッチフラグ(切り離しマーク)を設定せず、 [WrapperManager.exec()]メソッドを使って起動された 全ての子プロセスを終了させます。

Wrapper は、JVM がキレイに終了した後も動作を続けている子プロセスのシャットダウンを試みます。 UNIX プラットフォーム上では、 これは、各プロセスへ「SIGTERM」を送信して、 それらのプロセスが退出するのを待機することで行われます。 Windows プラットフォーム上では、 [CTRL]+[C]のキー操作でシグナルをコンソールアプリケーションへ 送信して、その子プロセスによって所有されている 各ウィンドウへ、「WM_CLOSE」メッセージが送信されます。 多くの Windows アプリケーションでは、シャットダウンされる際に、 保存確認のダイアログが表示される可能性もあり、そのため、 それらのプロセスが完全に終了しない可能性があります。 現在、CTRL-C を Windows コンソールプロセスに送信して、 クリーンにシャットダウンするように要求することはできないため、 プロセスはただちに終了します。

もし全ての子プロセスが、シャットダウンされたと固く決心している場合には、 Wrapperはタイムアウト(時間切れ)になる前に継続します。

一旦、タイムアウト(時間切れ)になると、 Wrapperは動作している子プロセスであっても、それらを強制的に閉じます。 UNIXプラットフォームでは、 各プロセスへ「SIGKILL」を送信することで行われます。 Windowsプラットフォーム上では、 そのプロセスは強制的に終了させられます。

子プロセスについての情報は、唯一、 デバッグ出力が有効な場合の時だけ、 あるいは、 [wrapper.child.status.loglevel] プロパティが「見える」レベルに設定されている時だけ、 ログ化されます。

ケース例:

次の例では、 キレイにシャットダウンされる子プロセス3個の例です。 2つのシャットダウンが即座に起こり、3番目には数秒の時間を要しています。

wrapper  | 管理された子プロセスのシャットダウンをリクエスト中。 PID: 1852
wrapper  | 管理された子プロセスのシャットダウンをリクエスト中。 PID: 3584
wrapper  | 管理された子プロセスのシャットダウンをリクエスト中。 PID: 3944
wrapper  | 管理された子プロセス 3 つはまだ動作中。
wrapper  | 管理された子プロセスがシャットダウンを確認しました。 PID: 1852
wrapper  | 管理された子プロセスがシャットダウンを確認しました。 PID: 3584
wrapper  | 管理された子プロセス 1 つはまだ動作中。
wrapper  | 管理された子プロセス 1 つはまだ動作中。
wrapper  | 管理された子プロセスがシャットダウンを確認しました。 PID: 3944
wrapper  | 全ての管理された子プロセスがシャットダウン。
wrapper  | <-- Wrapperが停止しました

次の例では、 キレイにシャットダウンされる子プロセス2個の例です。 3番目にはタイムアウト(時間切れ)が発生して、終了されています。

wrapper  | 管理された子プロセスのシャットダウンをリクエスト中。 PID: 3276
wrapper  | 管理された子プロセスのシャットダウンをリクエスト中。 PID: 3328
wrapper  | 管理された子プロセスのシャットダウンをリクエスト中。 PID: 1200
wrapper  | 管理された子プロセス 3 つはまだ動作中。
wrapper  | 管理された子プロセスがシャットダウンを確認しました。 PID: 3276
wrapper  | 管理された子プロセスがシャットダウンを確認しました。 PID: 3328
wrapper  | 管理された子プロセス 1 つはまだ動作中。
wrapper  | 管理された子プロセス 1 つはまだ動作中。
wrapper  | 管理された子プロセス 1 つはまだ動作中。
wrapper  | 管理された子プロセス 1 つはまだ動作中。
wrapper  | 管理された子プロセスを強制で終了中。 PID: 1200
wrapper  | 管理された子プロセスがシャットダウンを確認しました。 PID: 1200
wrapper  | 全ての管理された子プロセスがシャットダウン。
wrapper  | <-- Wrapperが停止しました

警告

この機能が有効中の場合、 このプロパティ値を「0 (ゼロ)」(=タイムアウト無効)か、あるいは「ある程度の大きい値」に設定すると、 Wrapperがシャットダウンで引っ掛かる、あるいは、決してJVMを再起動させられない可能性がある、 という意味になるので注意してください。 その場合には、Wrapperを再開させるために、 子プロセスを手動で終了する必要があるかもしれません。

参照: タイムアウト(時間切れ)