APアボートへの対応 |
WebOTX ではJava のオペレーション実行中に起きた例外についてはそれを捕捉してプロセス終了しま
す。捕捉した場合は内部的にTPSAbort(-1)というプロセス終了のAPI を発行してプロセス終了します。そ
の際別のスレッドで実行中のオペレーションは完了を待ち合わせます。本エラーが起きるとクライアントに
CORBA::UNKNOWN(3926)が返ります。
またサーバAP のトレースには例外捕捉時のスタックトレースを出力します。なお、サーバAP がオペレー
ション中で自らTPSAbort(-1)を呼び出した場合も本エラーとなりますが、その場合はスタックトレースは出
力しません。
イベントログ・シスログの確認
アボートによりプロセス終了した場合、イベントログ・シスログに以下のメッセージが出力されます。
OTXM:<システム名>:<プロセスグループ名>:<プロセスID>: E:1:TPS10-13201 ABORT IS PROCESS END. CODE:0
|
アボートによりプロセス終了した場合、AP ログに以下のメッセージが出力されます。
TPS10-13201 ABORT IS PROCESS END. CODE:0
|
アボートなどによりプロセスが異常終了した場合、history.act に以下のメッセージが出力されます。
TPS15-01107 Process abnormal end. PID=[<プロセスID>], class[<プロセスグループ名>], ped[<アプリケーショングループ名>.ped]
|
イベントログ・シスログの監視
アボートが発生した場合、イベントログ・シスログが出力されますのでそのメッセージを監視します。
イベントログ(アプリケーション、システム)・シスログ
AP ログ:
${INSTANCE_ROOT}/logs/tpsystem/<アプリケーショングループ名>/<プロセスグループ名>/save/<プロセスグループ名>.<数字>.<PID>.log
システムトレース:
${INSTANCE_ROOT}/logs/tpsystem/<アプリケーショングループ名>/<プロセスグループ名>/save/<プロセスグループ名>_sys.<数字>.<PID>.log
${INSTANCE_ROOT}/config/tpsystem/history.act (sav)
${INSTANCE_ROOT}/config/tpsystem/sysmsg.trc (sav)
${INSTANCE_ROOT}/logs/server.log
${INSTANCE_ROOT}/logs/webotx_agent.log
${INSTANCE_ROOT}/logs/tpsystem/webotx_tpmmgr.log
イベントジャーナル(採取方法は「TPモニタの運用操作 2.39 障害解析」を参照してください)
イベントログ・シスログに出力される、TPS15-01107 のメッセージから該当のプロセスグループを特定します。
Java ランタイム例外の場合は、AP ログに出力されるスタックトレースから例外が発生したオペレーションを特定します。
Java ランタイム例外が発生した場合はAP ログにスタックトレースが出力されていますので、そこから該当 の箇所を特定してください。サーバAP がオペレーション中で自らTPSAbort(-1)を呼び出した場合にはス タックトレースは出力されませんので、コードにてTPSAbort(-1)を呼び出している箇所を探して、原因を特 定してください。
実際にこの現象が発生してしまった場合の復旧方法について説明します。
プロセスグループの再起動
通常はプロセス再起動されるので特に対処する必要がないのですが、再起動回数を越えてしまうと、 プロセスグループが停止状態になってしまいます。その場合はプロセスグループの起動が必要で す。
この問題を予防するための対策については以下の方法があります。
問題のAP の修正
完全に問題を解決するためにはAP を修正する必要があります。Java ランタイム例外によりアボート
している場合は、該当AP ログに出力されているスタックトレースからアボート箇所の特定を行なうこ
とができます。発生箇所を中心に確認して原因を排除してください。ただし、該当AP で例外を意図的
にcatch している場合等、スタックトレースが出力されない事もあります。
TPSAbort(-1)によりアボートしている場合は呼び出し箇所を特定し、そこに至ってしまった要因を取り去るようにしてください。
予防ではありませんが、AP アボートが発生した場合の影響を軽減するためにプロセス数を増やすこ
とが効果的な場合があります。AP アボートが発生すると該当プロセスは再起動しますが、アボートし
てから再起動が完了するまでの間の呼び出しはエラーになってしまいます。そこで複数のプロセスを
設定することにより、1 つがアボートしても他のプロセスで処理が続行できるように設定できます。プ
ロセスグループの以下の設定を見直してください。
「プロセス制御」の「プロセス数」
なお、ステートフルの場合はこの対処はあまり効果がありません。
運用アシスタントの多重度最適化支援機能を利用する場合は、以下を1 以上に設定してください。
「運用アシスタント」の「多重度最適化支援:予備プロセス数」
運用アシスタント機能で多重度が過剰と判断されても予備プロセス数以下には減らされません。詳細は「TPモニタの運用操作 2.40.3 多重度の最適化支援」を参照してください。
アボートした場合のプロセスの再起動回数について設定します。システムの以下の設定を見直してください。
「上限設定」の「プロセス障害時の再起動回数」
また、一定時間経過した場合に再起動回数をリセットさせることができます。システムの以下の設定を見直してください。
「プロセスを正常と仮定する間隔」