11.4.3 トランザクション処理時間監視
トランザクション処理時間監視では,トランザクションブランチの開始から,同期点処理の終了までの経過時間を監視します。
トランザクション処理監視時間は,トランザクション関連定義のtrn_expiration_timeオペランド,trn_expiration_time_**オペランド(**は小文字のトランザクション種別),またはユーザサービス関連定義のservice_attr定義コマンドで指定します。トランザクション処理監視時間を過ぎても同期点処理が終了していない場合は,モニタスレッドから処理スレッドに対してシグナルが渡されます。この場合,TP1/EEはスレッド制御によってプロセスダウンまたはスレッドダウンします。
なお,TP1/EEのトランザクションに関する時間監視の詳細については,「付録C トランザクションの時間監視」を参照してください。
- 〈この項の構成〉
(1) トランザクション処理監視時間の変更
トランザクション処理の監視時間は,コマンドまたは関数で変更できます。
- コマンドで変更する場合
-
eetrntimコマンドを使用して,次のどちらかの方法で指定したトランザクション処理の監視時間を変更します。
-
トランザクション関連定義のtrn_expiration_timeオペランドで指定
-
トランザクション関連定義のtrn_expiration_time_**オペランドで指定
eetrntimコマンドを実行すると,コマンドの実行後に起動されるトランザクション処理の監視時間を変更できます。eetrntimコマンド実行時の,実行中のトランザクション処理の監視時間は変更できません。
-
- 関数で変更する場合
-
ee_trn_set_exp_time関数を使用して,次のどれかの方法で指定したトランザクション処理の監視時間を変更します。
-
トランザクション関連定義のtrn_expiration_timeオペランドで指定
-
トランザクション関連定義のtrn_expiration_time_**オペランドで指定
-
ユーザサービス関連定義のservice_attr定義コマンドで指定
ee_trn_set_exp_time関数を呼び出すと,実行中のトランザクション処理の監視時間を,関数で指定した監視時間で再開始できます。ee_trn_set_exp_time関数を呼び出す前のトランザクション処理時間監視は,無効になります。
ee_trn_set_exp_time関数を使用した変更は,ee_trn_set_exp_time関数を呼び出したトランザクションだけに有効です。また,ee_trn_set_exp_time関数は,同一トランザクション内で2回以上呼び出すことはできません。
-
(2) 注意事項
TP1/EEのトランザクション処理監視時間には,次に示すHiRDBサーバのSQLタイムアウト値よりも大きな値を指定してください。
-
HiRDBのクライアント環境定義のPDCWAITTIMEオペランドの値
-
TP1/Server Baseのユーザサービス定義のputenv形式またはdcputenv形式で指定する,HiRDBの環境変数のPDSWAITTIME
TP1/EEのトランザクション処理監視時間にHiRDBのSQLタイムアウト値よりも小さい値を指定すると,トランザクション経過時間監視によってスレッドダウンが多発した場合に,スレッドが保有していたHiRDBのリソースが解放されません。このため,リソース不足が原因となってTP1/EEがプロセスダウンすることがあります。