プロセス突然終了への対応

事象説明

    次のような例外が発生した場合や操作を行った場合、プロセスグループのプロセスでは障害が検出されず、プロセスが突然終了します。

状況の確認方法

    イベントログまたはシスログの確認

      リクエスト実行中にプロセスグループのプロセスが突然終了した場合、以下のメッセージが出力されます。

      OTXM:<システム名>::<プロセスID>: W:13:TPS15-01107 Process abnormal end. PID=[<プロセスID>], class[<プロセスグループ名>], ped[<アプリケーショングループ名>.ped]

    history.actの確認

      TPS15-01217 Get SIGCHLD. pid=<プロセスID>,exit=<プロセス終了コード>, termsig=<シグナル番号>, …

      TPS15-01107 Process abnormal end. PID=[<プロセスID>], class[<プロセスグループ名>], ped[<アプリケーショングループ名>.ped]

採取資料

    イベントログ(アプリケーション、システム)またはシスログ

    アプリケーションログ:
    ${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 障害解析」を参照してください)

    ワトソンログ (Windows)

    core (UNIX)

    ${AS_INSTALL}/Trnsv/hs_err_pid<プロセスID>.log (Java)

復旧方法

    WebOTXの機能により、プロセスグループのプロセスは自動で再起動するため、対処不要です。プロセスの再起動回数の上限を越えると、プロセスグループが停止状態になりますが、この場合はプロセスグループを起動してください。

予防のための対策

    Windowsの場合

      ワトソンログに障害情報が残っていないか確認してください。

    UNIXの場合

      /opt/WebOTX/Trnsvディレクトリにcoreが出力されていないか確認してください。coreが出力されている場合は、デバッガを使用して解析します。以下に、gdbを使用して確認する手順を示します。

      1. /opt/WebOTX/Trnsvディレクトリに移動します。
        > cd /opt/WebOTX/Trnsv

      2. coreのファイルサイズを出力します。
        ファイルサイズが2GB程度である場合、ファイルサイズ上限(既定値2GB)により、coreが正常に出力されていない可能性があります。この場合はスタックは正常に出力されないため、coreによる解析はできません。
        > ls -l core

      3. coreを出力したファイルを確認します。
        > file core

      4. gdbを起動します(THTPPJAVA2がcoreを出力したものとします)。
        > gdb /opt/WebOTX/Trnsv/bin/THTPPJAVA2 core

      5. whereコマンドで、例外が発生したスレッドのスタックを出力します。
        (gdb) where

      6. 出力されたスタックから、例外の発生箇所を特定します。

      7. 発生箇所を中心にコードを確認して原因を排除します。

      WebOTX開発部門へ問い合わせを行う場合、gdb の packcore 機能を使用してpackcore.tar.Zを採取し、送付してください。coreファイルのみの送付では解析できませんのでご注意ください。

      1. gdbを起動します(THTPPJAVA2がcoreを出力したものとします)。
        > gdb /opt/WebOTX/Trnsv/bin/THTPPJAVA2 core

      2. packcore を実行します。gdb 実行時のカレントディレクトリに packcore.tar.Z が作成されます。
        (gdb) packcore

      3. gdbを終了します。
        (gdb) quit

      Javaアプリケーションの場合

        /opt/WebOTX/Trnsvディレクトリにhs_err_pid<プロセスID>.logが出力されていないか確認してください。hs_err_pid<プロセスID>.logにはスタックが出力されています。スタックの一番上のメソッドがJavaのメソッドである場合、Java VMの担当部門に問い合わせてください。

      COBOLアプリケーションの場合

        COBOLの実装仕様により、十進例外が発生するとプロセス終了となります。該当の例外が発生していないか調査してください。

      その他

        history.actに出力されるTPS15-01217のプロセス終了メッセージには、プロセス終了コードやシグナル番号が出ており、終了理由を推測できる場合があります。exit()された場合には、exit=に続く部分にexitコードが入ります。exit() されていない場合には、Windowsでは例外コードがexit=に続く部分に入ります。UNIXでは、シグナルが発生した場合にはtermsig=に続く部分に該当シグナル番号が入ります。

ファイルサイズ上限を解除する方法

    UNIX系OSを使用している場合、ファイルサイズ上限(既定値2GB)により、2GB以上のファイルサイズのcoreを出力することができない可能性があります。 2GB以上のファイルを出力したい場合は次の設定を行い、WebOTXを再起動してください。

    Linuxの場合

      システムの制限により、core の最大サイズが設定されています。OSのulimitコマンドまたはlimitコマンドを使用して、core のシステム制限の最大サイズを増加してください。 ulimitコマンドまたはlimitコマンドについてはOSのマニュアルをご覧ください。

    HP-UX, Solarisの場合

      WebOTXの設定により、core の最大サイズが制限されています。/opt/WebOTX/Trnsv/bin/tpadm2.sh を編集してください。 適切な箇所(例えばファイルの2行目)に次の2行を追加してください。

      ulimit -c unlimited
      ulimit -f unlimited
      注)最大サイズを無制限にする場合の例です。ulimitコマンドについてはOSのマニュアルをご覧ください。

その他

    Windows OSでは、OSの設定により、例外発生時のOS側の挙動を設定することができます。
    例外発生のダイアログが画面に出力されることがありますが、このダイアログは例外を起こしたプロセスの処理の延長で表示されるため、ダイアログを閉じるまで、例外が発生したプロセスは終了しません。プロセスが終了しない場合、WebOTXの機能でプロセスを再起動できないため、自動復旧しません。
    OSの設定により、例外発生時にダイアログを表示させない運用を推奨します。OSの設定であるため、WebOTX以外のプロセスに対する影響を考慮してください。


関連情報

    ネイティブ例外への対応
    APアボートへの対応

    オペレーション呼び出しでの障害
    サーバアプリケーションの障害
    TPモニタ機能の障害解析

    トラブルシューティング(障害解析)