11.4.5 処理キューの滞留監視
オンライン中に,プログラムループ,デッドロック,各種テーブルの不当な破壊などが発生すると,トランザクション処理が進まないため,オンラインシステムの処理を続行できない場合があります。
このような異常を早期に検知するために,処理キューに滞留するサービス要求を一定の時間間隔で監視する機能を,処理キューの滞留監視機能といいます。処理キューの滞留監視機能を使用すると,オンラインの再開始を速やかに処理できます。処理キューは,次に示すような流れで滞留します。
-
何らかの理由によってサービス要求の処理が遅れる。
-
処理キューからのサービス要求の取り出しが遅れる。
-
サービス要求が処理キューに滞留する。
処理キューの滞留監視時に,オンライン打ち切りと判定された場合は,KFSB60802-EメッセージおよびKFSB65380-Eメッセージを出力し,TP1/EEをプロセスダウン(強制停止)させます。
(1) 指定するオペランド
処理キューの滞留監視機能を使用するには,次に示すプロセス関連定義のオペランドをすべて指定してください。
- stay_watch_check_intervalオペランド
- stay_watch_queue_rateオペランド
-
オンラインを打ち切るかどうかの判定を開始する際の判断になる,処理キュー滞留率のしきい値を指定します。
処理キュー滞留率とは,次に示す計算式から算出される滞留率です。
処理キュー滞留率=(プロセス全体の処理キュー滞留数÷処理キュー確保数)×100
- stay_watch_down_rateオペランド
-
オンラインを打ち切るかどうかの判定で使用する,オンライン打ち切り係数を指定します。オンライン打ち切り係数とは,処理キューの滞留監視で使用する処理キュー処理率の低下を判断するしきい値です。
処理キュー処理率とは,次に示す計算式から算出される処理率です。
処理キュー処理率=(前回監視時から今回監視時までの処理キュー処理数÷前回監視時のプロセス全体での処理キュー滞留数)×100
これらのオペランドのどれか一つでも省略した場合は,KFSB40802-Wメッセージを出力し,処理キューの滞留監視機能を使用しないで処理を続けます。これらのオペランドのすべてを省略した場合は,KFSB40802-Wメッセージを出力しません。
- 注意事項
-
処理キューの滞留監視機能を使用するときに指定するしきい値の指定によっては,ノード間負荷バランス機能で使用する負荷レベルがLEVEL2になる前にプロセスダウンするおそれがあります。このため,処理キューの滞留監視機能を使用するためのオペランドには,ノード間負荷バランス機能を考慮した値を指定してください。
(2) 処理キューの滞留監視の処理の流れ
処理キューの滞留監視の処理の流れを説明します。
-
プロセス関連定義のstay_watch_check_intervalオペランドで指定した値を基に,一定の時間間隔で処理キューを監視します(通常監視区間)。
-
処理キュー滞留率が,プロセス関連定義のstay_watch_queue_rateオペランドの指定値以上になった時点で,オンライン打ち切り監視判定区間に入り,オンライン打ち切り判定を開始します。オンライン打ち切り判定では,次に示すオンライン打ち切り判定式によって処理キューの滞留状況を判定します。
オンライン打ち切り判定式
Sn-1※1 < オンライン打ち切り係数 × Pn-1※2
注※1 前回監視時から今回監視時までの処理キュー処理数です。
注※2 前回監視時の処理キュー滞留数です。
オンライン打ち切り判定後の処理を次に示します。
-
オンライン打ち切り判定式が成立しない場合
処理を続行します。
-
オンライン打ち切り判定式が成立した場合
KFSB60802-EメッセージおよびKFSB65380-Eメッセージを出力し,TP1/EEをプロセスダウンさせます。
メッセージを出力したあとにトラブルシュート情報を取得するため,プロセスダウンするまでに時間が掛かることがあります。
TP1/EEがプロセスダウンした場合は,同一ノード内でTP1/EEプロセスを再開始します。待機系にあるTP1/EEに切り替えたい場合は,TP1/Server Baseのユーザサービス定義のcriticalオペランドにYを指定してください。
-
-
オンライン打ち切り判定のチェックポイントの処理キュー滞留率が,プロセス関連定義のstay_watch_queue_rateオペランドの指定値以上の間は,オンライン打ち切り監視判定区間のまま,処理を続行します。
オンライン打ち切り判定のチェックポイントの処理キュー滞留率が,プロセス関連定義のstay_watch_queue_rateオペランドの指定値未満になった場合は,オンライン打ち切り監視判定を終了して1.の処理に戻ります。
(3) 処理の流れの例
プロセス関連定義の各オペランドで次のように指定した場合の処理キューの滞留監視の処理の流れを図11-4に示します。
- プロセス関連定義
-
stay_watch_check_interval=60(秒)
stay_watch_queue_rate=60(%)
stay_watch_down_rate=20(%)
処理キュー確保数は,100個とします(メモリ関連定義のpce_noオペランドで指定)。
オンライン打ち切り監視判定のチェックポイント(Cn)ごとに説明します。処理キューの滞留監視は,プロセス関連定義のstay_watch_check_intervalオペランドに60を指定しているため,60秒ごとに実施します。
- C1の処理
-
処理キュー滞留数(P1)が60個,処理キュー滞留率が60%で,プロセス関連定義のstay_watch_queue_rateオペランドの指定値以上になったため,オンライン打ち切り監視判定区間に入り,オンライン打ち切り判定を開始します。
- C2の処理
-
処理キュー滞留数(P2)が75個,処理キュー滞留率が75%で,プロセス関連定義のstay_watch_queue_rateオペランドの指定値以上のため,オンライン打ち切り監視判定区間のまま,次に示す値でオンライン打ち切り判定を実施します。
-
C1からC2までの処理キュー処理数(S1):13個
-
C1時点の処理キュー滞留数(P1):60個
C1からC2までの処理キュー処理数が,C1時点の処理キュー滞留数(P1)にオンライン打ち切り係数を掛けた値より大きい(前回から滞留している処理キューの個数が,前回から滞留したままとなってもオンラインを継続できる処理キュー数の上限値を超えない)ため,オンライン打ち切り判定式が成立しません。
このため,オンライン打ち切り監視判定区間のまま,処理を続行します。
-
- C3の処理
-
処理キュー滞留数(P3)が70個,処理キュー滞留率が70%で,プロセス関連定義のstay_watch_queue_rateオペランドの指定値以上のため,オンライン打ち切り監視判定区間のまま,次に示す値でオンライン打ち切り判定を実施します。
-
C2からC3までの処理キュー処理数(S2):14個
-
C2時点の処理キュー滞留数(P2):75個
C2からC3までの処理キュー処理数が,C2時点の処理キュー滞留数(P2)にオンライン打ち切り係数を掛けた値より小さい(前回から滞留している処理キューの個数が,前回から滞留したままとなってもオンラインを継続できる処理キュー数の上限値を超える)ため,オンライン打ち切り判定式が成立します。
このため,オンラインを打ち切り,KFSB60802-EメッセージおよびKFSB65380-Eメッセージを出力し,TP1/EEをプロセスダウンさせます。
-
- C4の処理(C3の時点で処理キュー処理率が低下しなかった場合)
-
処理キュー滞留数(P4)が59個,処理キュー滞留率が59%で,プロセス関連定義のstay_watch_queue_rateオペランドの指定値未満になったため,オンライン打ち切り監視判定を終了します。
- C5以降の処理
-
オンライン打ち切り監視判定を終了したあとも,60秒ごとに処理キューの滞留監視を実施します。
(4) サービスの閉塞による処理キューの引き出し禁止
処理キューを引き出し禁止に設定している場合(ユーザサービス関連定義のforbid_draw_serviceオペランドにYを指定),サービスの閉塞時に処理キューの滞留監視機能が停止します。
すべてのサービスの閉塞が解除されたあと,処理キューの滞留監視を再開します。また,処理キュー滞留監視間隔時間にサービスの閉塞,閉塞解除が行われた場合は,次回のチェックポイントで通常監視状態から開始します。