付録H.2 実行間隔とポーリング間隔
(1) 実行間隔とポーリング間隔の概要
アプリケーション呼び出しサービスが処理を実行する契機は,実行間隔とポーリング間隔によって決まります。
実行間隔は,ref識別子単位,グループ単位に設定する間隔で,呼び出す必要がある作業があるかどうかを検索する間隔です。
ポーリング間隔は,システムID単位に設定する間隔で,呼び出す必要があるref識別子があるかどうかを検索する間隔です。
次の図で,実行間隔とポーリング間隔について説明します。
|
|
- <説明>
-
アプリケーション呼び出しサービスは,呼び出す必要があるref識別子を見つけるために,ポーリング間隔ごとにアプリケーション呼び出し制御情報テーブルを検索します(図中の(1))。アプリケーション呼び出し制御情報テーブルには,前回呼び出し処理を行った時間(ロック取得時間)が格納されています。図の例では,Ref1は2019/05/15 10:30:25に,Ref2は2019/05/15 10:32:50に前回の呼び出し処理を行っています。
さらに,アプリケーション呼び出しサービスは,Ref1およびRef2が実行間隔を過ぎているかどうかを判定します(図中の(2))。図の例では,Ref1の実行間隔が300秒,Ref2の実行間隔が600秒に設定されています。ロック取得時間に対して,設定されている実行間隔を現在時刻が過ぎているRef1が呼び出し処理の対象となります(図中の(3))。
アプリケーション呼び出しサービスは,呼び出し処理の対象となったRef1を作業者IDに持ち,状態が「実行開始可能(ready)」の作業に対して,呼び出し処理を行います。
実行間隔は,ref識別子単位,またはグループ単位で設定できます。アプリケーション呼び出し制御情報の「実行間隔(ExecuteInterval)」に設定してください。アプリケーション呼び出し制御情報の詳細については,マニュアル「uCosminexus Service Coordinator Interactive Workflow コマンド」の「ciwmngap(アプリケーション呼び出し制御情報の管理)」を参照してください。
ポーリング間隔は,システムID単位で設定できます。共通設定ファイルの「AppCallServicePollingInterval」に設定してください。AppCallServicePollingIntervalの詳細については,「付録H.16(5) 共通設定ファイルに指定するパラメタ一覧および内容」の「(c) AppCallServicePollingInterval」を参照してください。
- ヒント
-
アプリケーション呼び出しサービスが実際に作業を呼び出す間隔は,実行間隔の設定値から最大でポーリング間隔分のずれが発生します。ポーリング間隔を小さくするほど,実行間隔の設定値と実際に作業を呼び出す間隔とのずれは小さくなりますが,その分アプリケーション呼び出し制御情報テーブルの検索実行回数が多くなります。実行間隔とポーリング間隔のずれを次の図に示します。
図の例では,ポーリング間隔60秒ごとに,アプリケーション呼び出しサービスがアプリケーション呼び出し制御情報テーブルを検索しています。まず,1回目のポーリング間隔の途中の時刻にRef1を呼び出します。そのあと,ポーリングを繰り返し,6回目のポーリング間隔の最初にRef1の実行間隔経過を判定します。しかし,判定のタイミングでは,1回目のポーリング間隔でのRef1の呼び出しから300秒が経過していません。よって,次のRef1の呼び出し処理は7回目のポーリング間隔の間に行われるため,実行間隔の設定値である300秒とのずれが発生します。
図H‒4 実行間隔とポーリング間隔のずれ
(2) ポーリング間隔を決定する際の指針
ポーリング間隔を決定する場合は,次の指針を考慮してください。
ポーリング間隔には,小さな値を設定することを推奨します。ただし,1秒のように極端に小さな値では,データベースサーバの負荷が高くなるおそれがあるため推奨しません。詳しくはヒントを参照してください。
- <指針>
-
実行間隔とポーリング間隔のずれを考慮して決定します。
ポーリング間隔が小さいほど実行間隔のずれは小さく,ポーリング間隔が大きいほど実行間隔のずれは大きくなります。
- ヒント
-
ポーリング間隔が経過するごとに,アプリケーション呼び出し制御情報テーブルの検索が行われるため,ポーリング間隔が小さいほどデータベースサーバの負荷は高くなり,ポーリング間隔が大きいほどデータベースサーバの負荷は低くなります。
(3) 実行間隔を決定する際の指針
実行間隔を決定する場合は,次の指針を考慮してください。0秒や1秒のように極端に小さな値では,データベースサーバの負荷が高くなるおそれがあるため推奨しません。詳しくはヒントを参照してください。
- <指針1>
-
RESTアプリケーション側の負荷を考慮して決定します。
詳細は,「付録H.3(4) RESTアプリケーション呼び出しの流量制御」を参照してください。
- <指針2>
-
ビジネスプロセスの遷移時間を考慮して決定します。
次の図は,ビジネスプロセスの遷移時間への実行間隔の影響を示しています。
図H‒5 ビジネスプロセスの遷移時間への実行間隔の影響 - <説明>
-
アプリケーション呼び出しサービスが処理する作業では,通常,生成されてから完了するまでの時間(図中の2.〜4.)は,最大で実行間隔になります。
ここでは,図中のように,アプリケーション呼び出しサービスが処理する作業の前後に,人が処理する作業があるビジネスプロセスを考えます。
前の作業が完了してから後の作業が生成されるまでに掛かる時間(図中の1.〜5.)は,アプリケーション呼び出しサービスが処理する作業が生成されてから完了するまでに掛かる時間(図中の2.〜4.)とほぼ同じになります。
したがって,実行間隔は,前の作業が完了してから後の作業が生成される(図中の1.〜5.)までに許容できる時間より小さくしてください。
- ヒント
-
実行間隔が経過するごとに,アプリケーション呼び出し制御情報テーブルの検索と更新,作業テーブルの検索が行われます。これは,処理対象となる作業が存在しなくても必ず行われます。そのため,実行間隔が小さいほどデータベースサーバの負荷は高くなり,実行間隔が大きいほどデータベースサーバの負荷は低くなります。