実行時間超過への対応 |
各サーバプロセスの制御スレッドでオペレーションの実行時間を常に監視しています。 あらかじめ設定していた上限を越えてもオペレーションが完了しない場合、 異常とみなしてプロセス終了します。その際別のスレッドで実行中のオペレーションの完了を待ち合わせます。 停止を待ち合わせる時間は既定値で600秒です。 600秒を経過しても実行中のスレッドが存在する場合、スレッドの処理を強制終了してプロセス再起動処理が実行されます。
実行時間超過が起きた場合、イベントログ・シスログには以下のメッセージが出力されます。
OTXM:<システム名>:<プロセスグループ名>:<プロセスID>: E:1:TPS10-13301 Tx TIME OVER ERROR.
CODE:1 TX-GROUP <プロセスグループ名> <プロセスID>
|
また、クライアントアプリケーションにはNO_RESPONSE(3927)のエラーを返します。
イベントログ・シスログの監視
イベントログ・シスログに出力される、TPS10-13301 のメッセージから該当のプロセスグループを特定します。
(1) 実行時間超過が発生した場合は、システムトレースに実行途中であったオペレーションの情報が以 下のように記録されます。システムトレースについては「ロギング編」を参照してください。
Error: The following TX execution is unfinished.
|
実行時間超過が発生したオペレーションはオペレーション名LoopBack、インタフェース名 IDL:sample/LoopBackSample:1.0、モジュール名loopback_jsv.jar であることがわかります。
(2) AP ログに以下のように出力されます。
TPS10-13301 Tx TIME OVER ERROR. CODE:x TX-GROUP <プロセスグループ名> <プロセスID>
elptime-over info : TXID=AAABAB,…
|
このAP ログのTXID から実行時間超過が発生したオペレーションを特定できます。TXID とオペレーショ ン名の関連を調べるためにイベントジャーナルを採取してください。イベントジャーナルは統合運用管理 ツールのTP システムを右クリックし、「イベントジャーナルの編集」の実行で採取できます。実行すると、 ${INSTANCE_ROOT}/config/tpsystem/tmp ディレクトリにotx.t2o ファイルが作成され、その中にTXID と オペレーションの対応関係が記載されています。
該当AP がJava の場合、実行時間超過が発生するとシステムトレースにスタックトレースが記録されま す。これより対象コードが特定できます。
原因の究明ができるまでは再起動設定(「TP システム」.「上限設定」-「プロセス障害時の再起動回数」) を大きめにすることで、実行時間超過によってサービス停止とならないようにしてください。
実際にこの現象が発生してしてしまった場合の復旧方法について説明します。
プロセスグループの再起動
システムの再起動
問題のあったオペレーションがそもそもストールなどによって応答の望みがまったくないものなのか(いつ まで待っても応答が返らないものなのか)、やむを得ない理由により完了までに時間がかかっていたのか により、対策は異なります。
問題のAP の修正
実行時間上限の見直し
TPS10-13301, NO_RESPONSE(3927)