インデックス

wrapper.timer.<n>.<x> プロパティ群

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

警告

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

このタイマープロパティでは、クローンジョブのような指定された時刻や間隔で、 JVM の再起動、シャットダウン、またはスレッドダンプのスケジュール予約を可能にします。 ユーザーアプリケーションにメモリリークが発生する場合など、 定期的な再起動を必要とするケースで、このタイマーは便利な機能です。

基本設定:

次の例では、毎日 AM4:00 に JVM を再起動します。

設定例:
wrapper.timer.1.action=RESTART
wrapper.timer.1.interval=hour=4

各タイマーの宣言は、2つのプロパティから成り立っています。

<n> コンポーネント部:

プロパティ名の「<n>」コンポーネント部には、 「1」からカウントアップしていくインテージャー(整数値)のナンバリング数値を入れて指定します。 デフォルトでは、連番であり欠番で飛ぶことはできないはずです。 [wrapper.ignore_sequence_gaps] プロパティで、シーケンス内でギャップ(途切れ)検索を「許可する/許可しない」を任意に設定にすることができます。

wrapper.timer.<n>.action プロパティ

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

可能なタイマーアクションは次のとおりです。

  • [DEBUG] :

    毎回タイマーが発生するごとに、デバッグメッセージがログに記録されます。 この機能は、どのようにタイマーが動作しているか把握するのに便利です。

  • [STATS] (ver. 3.5.52 から、スタンダード版、プロフェッショナル版):

    パフォーマンス統計を出力します。

  • [DUMP] :

    毎回タイマーが発生するごとに、JVM がスレッドダンプを実行するようリクエストします。 これは、メモリやパフォーマンスの問題がいつ発生したのか正確にはわからない場合に、 その原因を追究するのに役立ちます。 もし高い頻度でインターバル(一定間隔)を設定する場合には、 大きいサイズのログファイルを取り扱えるように、 ログ化コンフィギュレーションプロパティが 正しくセットアップされていることを確認してください。 JVM が動作していない環境では、この値を無視します。

  • [GC] (ver. 3.5.7 から):

    毎回タイマーが発生するごとに、JVM で完全なガベージコレクションスイープを実行します。 フルスイープを行うと、すべてのスレッドがフリーズすることが多いため、これを頻繁に行うと、JVM のパフォーマンスに影響を与えることに注意してください。 JVM が動作していない環境では、この値を無視します。

  • [RESTART] :

    毎回タイマーが発生するごとに、Java アプリケーションを再起動します。 JVM が動作していない環境では、この値を無視します。

  • [SHUTDOWN] :

    毎回タイマーが発生するごとに、Wrapper がシャットダウンされます。 これは、外部から Wrapper が再起動されない限り、明らかに一度限りのシャットダウンで実行されます。

  • [USER_<n>] (ver. 3.5.0から、プロフェッショナル版):

    ユーザー定義イベントを発生させます。

  • [PAUSE] (ver. 3.5.0 から):

    一時停止が可能で JVM が動作している場合、Java アプリケーションを一時停止します。 詳しくは[wrapper.pausable]プロパティをご覧ください。

  • [RESUME] (ver. 3.5.0 から):

    一時停止状態にあるとき、Java アプリケーションを再開します。 これは、JVM が停止ではなく一時停止している場合に利用可能です。 詳しくは[wrapper.pausable]プロパティをご覧ください。

  • [SUSPEND_TIMEOUTS_<n>] (ver. 3.5.40から、スタンダード版、プロフェッショナル版):

    JVM が応答しない場合、Wrapper に全てのタイムアウトを一時停止するように指示します。 「<n>」は、タイムアウトを停止する期間(秒数)を指定し、1-3600(1秒から1時間まで)の範囲で設定できます。 これは、Java アプリケーションが長いブロックタスクを実行する必要がある時に Wrapper がアプリケーションが応答不能と判断するのを防ぐために使用できます。

    その他のアクションプロパティ、コマンドファイル、或いは Java WrapperManager.suspendTimeouts() メソッドでタイムアウトを一時停止することができます。

    タイムアウトを一時停止するリクエストが複数ある場合、各リクエストで指定されている秒数は加算されません。 代わりに、新しく指定された秒数が残りの停止期間より長い場合、停止期間が置き換えられますが、 それより短い場合は無視されます。

  • [RESUME_TIMEOUTS] (ver. 3.5.40から、スタンダード版、プロフェッショナル版):

    Wrapper に、一時停止された全てのタイムアウトを再開するように指示します。

    その他のアクションプロパティ、コマンドファイル、或いは Java WrapperManager.resumeTimeouts() メソッドでタイムアウトを再開することができます。

  • [NONE] :

    事実上、タイマー機能を無効にします。 断続的に利用したいタイマーの場合、再設定しなければならない手間を回避するために、 タイマー設定を削除するのではなく、一時的にタイマー機能を無効にするのに便利です。

複数のアクションを指定する:

Wrapper ver. 3.5.0 から、スペースやカンマで区切ることで、複数のアクションを指定することが可能です。 複数のアクションを指定すると、迅速に指定した順番で続けて実行されます。

次の例では、毎日 AM4:00 にスレッドダンプを実行して、その後、JVM を再起動します。

設定例:
wrapper.timer.1.action=DUMP,RESTART
wrapper.timer.1.interval=hour=4

wrapper.timer.<n>.interval プロパティ

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

トークン(時間単位)の組み合わせを使って、毎回決まった定刻に動く、タイマーの一定間隔を設定できます。 例えば、次の例では、「2日毎の 04:30:10 の時刻に JVM を再起動します」。

設定例:
wrapper.timer.1.action=RESTART
wrapper.timer.1.interval=day-of-week=*/2; hour=4; minute=30; second=10

一定間隔のトークン(時間単位)の設定に可能な値は次のとおりです。

  • [day-of-week] : 曜日を指定します。 使用可能な価値は 「1(日曜) - 7(土曜)」の範囲です。

  • [hour] : 時刻(時)を指定します。 使用可能な価値は「0 - 23」の範囲です。

  • [minute] : 時刻(分)を指定します。 使用可能な価値は「0 - 59」の範囲です。

  • [second] : 時刻(秒)を指定します。 使用可能な価値は「0 - 59」の範囲です。

トークン(単位)の値に利用できる形式は次のとおりです。

  • 絶対値:

    5]のような値は、単一の固定値を指定するために使います。 例えば「hour=5」ならば「5時」です。

  • 全ての値:

    *]のような値は、 ワイルドカード文字と同じで、可能な値の全てを指定するために使います。

    例えば「hour=*」ならば「 hour=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23」と同じです。

  • 全ての値(オフセットで開始):(Ver. 3.5.25)

    *+OFFSET」のような値は、指定されたオフセットから始め、 そのトークン使用できるすべての値を指定するために使用されます。

    例えば、「"hour=*+10"」ならば 「"hour=10,11,12,13,14,15,16,17,18,19,20,21,22,23"」と同じです。

  • 一定間隔の値:

    */INTERVAL]のような値は、トークン(時間単位)の可能な範囲で、 繰り返すインターバル(一定間隔)の最小値を指定して使います。

    例えば、「minute=*/5」は、 「"minute=0,5,10,15,20,25,30,35,40,45,50,55"」と同じで、「5分毎」にタイマーが発生されます。

  • 一定間隔の値(オフセットで開始):(ver. 3.5.25)

    *+OFFSET/INTERVAL]のような値は、トークン(時間単位)の可能な範囲で、 開始オフセットと繰り返すインターバルの最小値を指定して使います。

    例えば、「"minute=*+3/5"」は、 「minute=3,8,13,18,23,28,33,38,43,48,53,58」と同じで、 タイマーは3分目に開始し、それ以降に5分毎に発生されます。

  • 値の範囲:(ver. 3.5.25)

    LOW-HIGH」のような値は値の範囲を指定するために使用されます。

    例えば、「minute=5-8」ならば「minute=5,6,7,8」と同じです。

  • 値のリスト:(ver. 3.5.25)

    上記のいずれもコンマ区切りリストにまとめることができます。

    例えば、「"minute=*/10,*+2/10"」ならば 「minute=0,2,10,12,20,22,30,32,40,42,50,52」と同じで、

    minute=1-3,10-12」ならば「minute=1,2,3,10,11,12」と同じで、

    minute=2-5,*/10」ならば「minute=0,2,3,4,5,10,20,30,40,50」と同じす。

ほとんどのケースでは、 必ずしも、全ての一定間隔のトークン(時間単位)を宣言する必要はありません。 トークンが省略された場合、それより上位レベルのトークンの範囲には[*]のデフォルト値が適用され、 それより下位レベルのトークンの範囲には最小値が適用されます。

次の宣言はどれも同類です。
wrapper.timer.1.interval=hour=4
wrapper.timer.1.interval=hour=4; minute=0; second=0
wrapper.timer.1.interval=day-of-week=*; hour=4
wrapper.timer.1.interval=day-of-week=*; hour=4; minute=0; second=0

wrapper.timer.max_catchup プロパティ

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

システム時間が変更された場合、その時間の範囲内に一つ、或いは複数のスケジュールされていたイベントがある可能性があります。 Wrapper では、イベントを立て続けに実行して、全てのイベントの完了を試みます。 その実行数が多い場合、望まない結果を引き起こすことがあります。

このプロパティでは、タイマーが一気に実行する最大時間数を設定することが可能です。 デフォルト値は「60秒」です。

設定例:(60秒)
wrapper.timer.max_catchup=60

注意

Wrapper が、ver. 3.5.29 より、 夏時間やタイムゾーンの変更に伴い、システム時間の設定を先に進めたり遅れたりると、 スキップまたは繰り返される時間の範囲内に設定してあった複数のタイマーイベントを 追いつくために新しいメソッドを使用します。

夏時間に変更するために時計を先に進めると、スキップされた時間帯に日次でスケジュールされたタイマーだけが 一気に実行されます。

同じように、時計を送れると、日次でスケジュールされているタイマーは繰り返し実行されません。

該当するタイマーは、「時間」(hour)、或いは「分」(minute)の指示子に「*」を使用しない、また、 曜日(day-of-week)或いは時間(hour)が設定しているタイマーです。

注意

Wrapper ver. 3.5.24 より以前のバージョンに問題がありました。 キャッチアップインターバル(一定間隔)にタイマー実行スケジュールが設定されていた場合、 タイマー実行を停止するという問題を起こすことがありました。 その問題を避けられるように、このプロパティには大きな値を設定すべきです。 「3600」秒の値を設定すれば、タイムゾーンの変更時の問題を避けられるでしょう。