付録A.2 トランザクションの時間監視

トランザクションの開始から同期点の取得までの間の限界経過時間に,他プロセスで実行するトランザクションブランチの処理時間(同期応答型RPCの処理時間)を含めることも含めないこともできます。

トランザクションの限界経過時間の監視方法は,ユーザサービス定義,ユーザサービスデフォルト定義,トランザクションサービス定義のtrn_expiration_time_suspendで指定します。

タイマ監視機能の運用について,trn_expiration_time_suspendオペランドの指定と各種タイマ値との関係を説明します。

<この項の構成>
(1) trn_expiration_time_suspendオペランドと各種タイマ監視値の関係
(2) trn_expiration_time_suspendオペランドと各種タイマ監視値の関係(連鎖RPCを使用した場合)
(3) trn_completion_limit_timeオペランドの監視区間

(1) trn_expiration_time_suspendオペランドと各種タイマ監視値の関係

trn_expiration_time_suspendオペランドの指定値と各種タイマ監視値の関係を図A-1に示します。

trn_expiration_time_suspendオペランドは図A-1のSPP1に指定します。このオペランドは,ユーザサービス定義,ユーザサービスデフォルト定義,またはトランザクションサービス定義に指定できます。指定値の優先順位は次のとおりです(1.>2.>3.)。

  1. ユーザサービス定義
  2. ユーザサービスデフォルト定義
  3. トランザクションサービス定義

このオペランドにYを指定した場合と,NまたはFを指定した場合とでは,トランザクションブランチ限界経過時間にRPCの処理時間を含めるかどうか(図A-1のt3で表す監視対象区間)が異なります。

図A-1 trn_expiration_time_suspendオペランドと各種タイマ値の関係

[図データ]

図中のt1~t10について次に説明します。

t1:watch_time(最大応答待ち時間)
RPCを発行してから応答が返ってくるまでの時間を監視します。
タイムアウト発生時にはdc_rpc_call()がDCRPCER_TIMED_OUT(-307)でエラーリターンします。
次に示すどれかの値が監視時間の最大値となります。
  • SUPのユーザサービス定義のwatch_timeオペランドの指定値
  • SUPのユーザサービス定義でwatch_timeオペランドの指定を省略した場合は,ユーザサービスデフォルト定義のwatch_timeオペランドの指定値
  • SUPのユーザサービス定義およびユーザサービスデフォルト定義でwatch_timeオペランドの指定を省略した場合は,システム共通定義のwatch_timeオペランドの指定値
  • すべての定義でwatch_timeオペランドの指定を省略した場合は180秒
t2:service_expiration_time(サービス関数開始から終了までの実行監視時間)
RPCを受け取ってサービス関数を開始してから,サービス関数終了までの時間を監視します。
タイムアウト時には,KFCA00502-Iメッセージが種別コード=3で出力され,SPP1がダウンします。
次に示すどれかの値が監視時間の最大値となります。
  • SPP1のユーザサービス定義のservice_expiration_timeオペランドの指定値
  • SPP1のユーザサービス定義でservice_expiration_timeオペランドの指定を省略した場合は,ユーザサービスデフォルト定義のservice_expiration_timeオペランドの指定値
  • すべての定義でservice_expiration_timeオペランドの指定を省略した場合は0(時間監視しない)
t3:trn_expiration_time(トランザクションブランチ限界経過時間)
トランザクション開始から,同期点処理を開始するまでの時間を監視します。
SPP1のtrn_expiration_time_suspendオペランドの指定によって,監視対象区間が異なります。監視区間は次のとおりです。
trn_expiration_time_suspendオペランドの指定がYの場合
t3(Y)で示す区間
trn_expiration_time_suspendオペランドの指定がNまたはFの場合
t3(N1)とt3(N2)で示す区間の合計
 
タイムアウト時には,KFCA00502-Iメッセージが種別コード=1で出力され,SPP1がダウンします。
次に示すどれかの値が監視時間の最大値となります。
  • SPP1のユーザサービス定義のtrn_expiration_timeオペランドの指定値
  • SPP1のユーザサービス定義でtrn_expiration_timeオペランドの指定を省略した場合は,ユーザサービスデフォルト定義のtrn_expiration_timeオペランドの指定値
  • SPP1のユーザサービス定義およびユーザサービスデフォルト定義でtrn_expiration_timeオペランドの指定を省略した場合は,トランザクションサービス定義のtrn_expiration_timeオペランドの指定値
  • すべての定義でtrn_expiration_timeオペランドの指定を省略した場合は0(時間監視しない)
t4:watch_time(最大応答待ち時間)
RPCを発行してから応答が返ってくるまでの時間を監視します。
タイムアウト時にはdc_rpc_call()がDCRPCER_TIMED_OUT(-307)でエラーリターンします。
次に示すどれかの値が監視時間の最大値となります。
  • SPP1のユーザサービス定義のwatch_timeオペランドの指定値
  • SPP1のユーザサービス定義でwatch_timeオペランドの指定を省略した場合は,ユーザサービスデフォルト定義のwatch_timeオペランドの指定値
  • SPP1のユーザサービス定義およびユーザサービスデフォルト定義でwatch_timeオペランドの指定を省略した場合は,システム共通定義のwatch_timeオペランドの指定値
  • すべての定義でwatch_timeオペランドの指定を省略した場合は180秒
t5:service_expiration_time(サービス関数開始から終了までの実行監視時間)
RPCを受け取ってサービス関数を開始してから,サービス関数終了までの時間を監視します。
タイムアウト時には,KFCA00502-Iメッセージが種別コード=3で出力され,SPP2がダウンします。
次に示すどれかの値が監視時間の最大値となります。
  • SPP2のユーザサービス定義のservice_expiration_timeオペランドの指定値
  • SPP2のユーザサービス定義でservice_expiration_timeオペランドの指定を省略した場合は,ユーザサービスデフォルト定義のservice_expiration_timeオペランドの指定値
  • すべての定義でservice_expiration_timeオペランドの指定を省略した場合は0(時間監視しない)
t6:trn_expiration_time(トランザクションブランチ限界経過時間)
トランザクション開始から,同期点処理を開始するまでの時間を監視します。
タイムアウト時には,KFCA00502-Iメッセージが種別コード=1で出力され,SPP2がダウンします。
次に示すどれかの値が監視時間の最大値となります。
  • SPP2のユーザサービス定義のtrn_expiration_timeオペランドの指定値
  • SPP2のユーザサービス定義でtrn_expiration_timeオペランドの指定を省略した場合は,ユーザサービスデフォルト定義のtrn_expiration_timeオペランドの指定値
  • SPP2のユーザサービス定義およびユーザサービスデフォルト定義でtrn_expiration_timeオペランドの指定を省略した場合は,トランザクションサービス定義の指定値
  • すべての定義でtrn_expiration_timeオペランドの指定を省略した場合は0(時間監視しない)
t7:trn_watch_time(トランザクション同期点処理時の最大通信待ち時間)
トランザクションの同期点処理で,トランザクションブランチ間の通信(プリペア,コミット,ロールバック指示,または応答など)の受信待ち時間です。
次に示すどれかの値が待ち時間の最大値となります。
  • SPP1のユーザサービス定義のtrn_watch_timeオペランドの指定値
  • SPP1のユーザサービス定義でtrn_watch_timeオペランドの指定を省略した場合は,ユーザサービスデフォルト定義のtrn_watch_timeオペランドの指定値
  • SPP1のユーザサービス定義およびユーザサービスデフォルト定義でtrn_watch_timeオペランドの指定を省略した場合は,トランザクションサービス定義のtrn_watch_timeオペランドの指定
  • SPP1のすべての定義でtrn_watch_timeオペランドの指定を省略した場合は,SPP1のwatch_timeオペランドの指定値
t8:trn_watch_time(トランザクション同期点処理時の最大通信待ち時間)
トランザクションの同期点処理で,トランザクションブランチ間の通信(プリペア,コミット,ロールバック指示,または応答など)の受信待ち時間です。
次に示すどれかの値が待ち時間の最大値となります。
  • SPP2のユーザサービス定義のtrn_watch_timeオペランドの指定値
  • SPP2のユーザサービス定義でtrn_watch_timeオペランドの指定を省略した場合は,ユーザサービスデフォルト定義のtrn_watch_timeオペランドの指定値
  • SPP2のユーザサービス定義およびユーザサービスデフォルト定義でtrn_watch_timeオペランドの指定を省略した場合は,トランザクションサービス定義のtrn_watch_timeオペランドの指定値
  • SPP2のすべての定義でtrn_watch_timeオペランドの指定を省略した場合は,SPP2のwatch_timeオペランドの指定値
t9:trn_completion_limit_time(トランザクション完了限界時間)
トランザクション開始から,終了までの時間を監視します。
タイムアウト時には,KFCA00502-Iメッセージが種別コード=4で出力され,SPP1がダウンします。
次に示すどれかの値が監視時間の最大値となります。
  • SPP1のユーザサービス定義のtrn_completion_limit_timeオペランドの指定値
  • SPP1のユーザサービス定義でtrn_completion_limit_timeオペランドの指定を省略した場合は,ユーザサービスデフォルト定義のtrn_completion_limit_timeオペランドの指定値
  • SPP1のユーザサービス定義およびユーザサービスデフォルト定義でtrn_completion_limit_timeオペランドの指定を省略した場合は,トランザクションサービス定義のtrn_completion_limit_timeオペランドの指定値
  • SPP1のすべての定義でtrn_completion_limit_timeオペランドの指定を省略した場合は0(時間監視しない)
t10:trn_completion_limit_time(トランザクション完了限界時間)
トランザクション開始から,終了までの時間を監視します。
タイムアウト時には,KFCA00502-Iメッセージが種別コード=4で出力され,SPP2がダウンします。
次に示すどれかの値が監視時間の最大値となります。
  • SPP2のユーザサービス定義のtrn_completion_limit_timeオペランドの指定値
  • SPP2のユーザサービス定義でtrn_completion_limit_timeオペランドの指定を省略した場合は,ユーザサービスデフォルト定義のtrn_completion_limit_timeオペランドの指定値
  • SPP2のユーザサービス定義およびユーザサービスデフォルト定義でtrn_completion_limit_timeオペランドの指定を省略した場合は,トランザクションサービス定義のtrn_completion_limit_timeオペランドの指定値
  • SPP2のすべての定義でtrn_completion_limit_timeオペランドの指定を省略した場合は0(時間監視しない)

(2) trn_expiration_time_suspendオペランドと各種タイマ監視値の関係(連鎖RPCを使用した場合)

連鎖RPCを使用した場合の,trn_expiration_time_suspendオペランドの指定値と各種タイマ監視値の関係を,図A-2に示します。

trn_expiration_time_suspendオペランドは図A-2のSPP1に指定します。このオペランドは,ユーザサービス定義,ユーザサービスデフォルト定義,またはトランザクションサービス定義に指定できます。指定値の優先順位は次のとおりです(1.>2.>3.)。

  1. ユーザサービス定義
  2. ユーザサービスデフォルト定義
  3. トランザクションサービス定義

このオペランドにYを指定した場合と,NまたはFを指定した場合とでは,トランザクションブランチ限界経過時間にRPCの処理時間を含めるかどうか(図A-2のt3で表す監視対象区間)が異なります。

図A-2 連鎖RPCを使用した場合の各種タイマ値の関係(連鎖RPCを使用した場合)

[図データ]

図中のt1,t2,t4~t10については,図A-1の説明を参照してください。t3およびt11について,次に説明します。

t3:trn_expiration_time(トランザクションブランチ限界経過時間)
トランザクション開始から,コミットされるまでの時間を監視します。
SPP1のtrn_expiration_time_suspendオペランドの指定によって,監視対象区間が異なります。監視区間は次のとおりです。
trn_expiration_time_suspendオペランドの指定がYの場合
t3(Y)で示す区間
trn_expiration_time_suspendオペランドの指定がNまたはFの場合
t3(N1),t3(N2)およびt3(N3)で示す区間の合計
 
タイムアウト時には,KFCA00502-Iメッセージが種別コード=1で出力され,SPP1がダウンします。
次に示すどれかの値が監視時間の最大値となります。
  • SPP1のユーザサービス定義のtrn_expiration_timeオペランドの指定値
  • SPP1のユーザサービス定義でtrn_expiration_timeオペランドの指定を省略した場合は,ユーザサービスデフォルト定義のtrn_expiration_timeオペランドの指定値
  • SPP1のユーザサービス定義およびユーザサービスデフォルト定義でtrn_expiration_timeオペランドの指定を省略した場合は,トランザクションサービス定義のtrn_expiration_timeオペランドの指定値
  • すべての定義でtrn_expiration_timeオペランドの指定を省略した場合は0(時間監視しない)
t11:watch_next_chain_time(連鎖RPC間隔監視時間)
連鎖RPCの応答を返してから,次の要求が来るまでの時間を監視します。
タイムアウト時にはKFCA00315-Eメッセージを出力し,SPP2がダウンします。
次に示すどれかの値が監視時間の最大値となります。
  • SPP2のユーザサービス定義のwatch_next_chain_timeオペランドの指定値
  • SPP2のユーザサービス定義でwatch_next_chain_timeオペランドを省略した場合は,ユーザサービスデフォルト定義のwatch_next_chain_timeオペランドの指定値
  • すべての定義でwatch_next_chain_timeオペランドの指定を省略した場合は180秒

(3) trn_completion_limit_timeオペランドの監視区間

trn_completion_limit_timeオペランドの監視区間には,XAインタフェース処理,サーバUAP呼び出し処理,およびすべてのユーザ処理が監視対象として含まれます。ただし,トランザクションの最適化(コミット最適化,およびプリペア最適化)が行われた場合は,SPPプロセスで実行中のトランザクション処理が終了した時点で時間監視を終了します。トランザクションの最適化の詳細については,マニュアル「OpenTP1 プログラム作成の手引」を参照してください。

trn_expiration_timeオペランドとtrn_completion_limit_timeオペランドの監視区間の差異を次の図に示します。

図A-3 trn_expiration_timeオペランドとtrn_completion_limit_timeオペランドの監視区間の差異

[図データ]

図中のTおよびNについて次に説明します。

T1:SUPでのtrn_expiration_timeオペランドの監視区間(トランザクションブランチ限界経過時間)
T2:SPPでのtrn_expiration_timeオペランドの監視区間(トランザクションブランチ限界経過時間)
N1:SUPでのtrn_completion_limit_timeオペランドの監視区間(トランザクション完了限界時間)
N2:SPPでのtrn_completion_limit_timeオペランドの監視区間(トランザクション完了限界時間)
SPPプロセスのサービス関数が開始してから,コミット完了のメッセージを送信したあとまでの時間を監視します。
N2(a):コミット最適化が行われた場合のtrn_completion_limit_timeオペランドの監視区間(トランザクション完了限界時間)
SPPプロセスのサービス関数が開始してから,プリペア完了のメッセージを送信したあとまでの時間を監視します。
N2(b):プリペア最適化が行われた場合trn_completion_limit_timeオペランドの監視区間(トランザクション完了限界時間)
SPPプロセスのサービス関数が開始してから,サービス関数完了の応答を送信したあとまでの時間を監視します。