wrapper.shutdown.timeout プロパティ

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

警告

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

このプロパティには、WrapperがJVMへシャットダウンするように指示を出してから、 WrapperのJVM側がそれに応答して停止するまでの待機時間(秒数)を設定します。 プロパティ値を「0 (ゼロ)」に設定すると、タイムアウト(時間切れ)は発生しません。

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

設定例:
wrapper.shutdown.timeout=30

問題?

もし、アプリケーションがシャットダウンする、タイムアウト問題に悩んでいる場合、 このタイムアウト時間を延長することを検討したいかもしれません。 アプリケーション内部のシャットダウンコードが完了するのに時間を要している場合に、 これが発生することがあります。 試しにテストとして、このプロパティを「300秒(5分間)」のように設定して、 これで問題が消えるか様子を見てください。

もし、依然としてアプリケーションが5分テストよりも早くタイムアウトする場合、 その問題はシャットダウン時の後半にあるのかもしれません。 [wrapper.jvm_exit.timeout] プロパティをご覧ください。

もし、依然としてアプリケーションが完全に5分間の待機後にタイムアウトする場合、 何に時間を要しているのか確認するために、アプリケーションのデバッグを検証する必要があるでしょう。 もしアプリケーションの シャットダウン段階のスピードアップが可能ならば、それが一番良いでしょう。 さもなければ、タイムアウト時間をアプリケーションがキレイにシャットダウンできるような値に設定してください。

アプリケーションの動作に高い信用性を確保するために、十分に長い時間の値を選ぶのが一番ですが、 実際のJVMハングアップのイベント時に、Wrapperができるだけ素早く反応するくらいの短い長さで十分です。

WrapperManager.signalStopping(n) :

もしシャットダウンの手順に、時々、長い時間を要する場合、 長めのタイムアウトを設定する手法ではなく、1つの代替え案として、 [WrapperManager.signalStopping(n)] メソッドを定期的に呼び出します。 この手法により、Wrapperへ「JVMが生きている」 「アプリケーションのシャットダウンがうまく進んでいる」ことを報告しながら、 アプリケーションの正常な動作を確信することができます。 ただし、そのレポート回数分だけ、たくさん呼び出すことになるため、 アプリケーションのシャットダウンに要する時間数がさらに長くなると思われます。

警告

この機能が有効中の場合、 このプロパティ値を「0 (ゼロ)」(=タイムアウト無効)か、あるいは「ある程度の大きい値」に設定すると、 シャットダウン段階で、JVMハングアップを検知するWrapperの機能が無効になる、 という意味になるので注意してください。

警告

wrapper.java.detect_debug_jvm] プロパティを「TRUE」に設定して「デバッガー検知」が有効中、このタイムアウトプロパティは無視されます。

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

参照: シャットダウン

Java Service Wrapper では、必要なコンフィギュレーション設定を含んだ完全なパッケージを提供しており、 それを活用することで、皆様の求めるニーズに合った動作を実現させることができます。 上記の例の他に、工夫次第で様々なことが実現可能となりますので、それぞれ個別にプロパティページをご覧ください。