TP モニタプロセス異常終了(共有メモリ残留)

事象説明

    TP モニタプロセスが何らかの理由で異常終了した場合、他のTP モニタに関連するプロセスが動作しているのであれば、クライアントからのユーザアクセスは成功する可能性はあります。しかし、TP システムに対する運用操作できなくなります。

    また、実行時に確保する共有メモリが残ってしまうため、次回以降のTP モニタ・マネージャの起動に失敗します。この場合、プロセスグループのプロセスが起動しないため、クライアントからのユーザアクセスがエラーとなり(ユーザ実装による)、統合運用管理ツールからはTP システムが停止していることが確認できます。

状況の確認方法

    TP モニタプロセス(tpmMain)が終了した場合、syslogに以下のメッセージが出力されます。

      WebOTX_Agent: OTX01180012:is not alive :domain1:category=monitor,type=alive-check-monitor,server=server,name=tpsystem-state (com.nec.webotx.enterprise.system.notification)
      
    なお、tpmMain が何らかのシグナルを受けた場合、syslogに以下のメッセージも出力されます。
      OTXM:MySystem: I:1: tpmMain getsignal(<x>).
      
      <x>はシグナルを表す番号です。例えば、9はSIGKILLです。

    実行時に確保した共有メモリが残っているかどうかは、Windows の場合は確認することができません。UNIX の場合はipcs コマンドで確認できます。tpmMain が停止しているにもかかわらず、ipcs コマンドの結果でKEY の下二桁が96(TP システムが複数ある場合は、1 ずつ増える)のものが残っていた場合、共有メモリが残っていることになります。

      # ipcs
      IPC status from /dev/kmem as of Wed Jun 7 15:11:24 2006

      TIDKEYMODEOWNERGROUP
      Message Queues:
      q     00x3c201079-Rrw--w--w-rootroot
      q     10x3e201079--rw-r--r--rootroot
      q198737940x4f4c3096--rw-rw-r--otxadmotxadmin
      q198737950x4f4c3196--rw-rw-r--otxadmotxadmin
      q198737960x4f4c3396--rw-rw-r--otxadmotxadmin
      :

    実行時に確保した共有メモリが残っている状態でドメインを起動した場合、syslogに以下のメッセージが出力されます。${AS_INSTALL}/Trnsv/multitpm/current 配下にTP システムのシステム名と同名のファイルがあるかどうかでエラーが以下のように変わります。

    なお、このファイルやキーは、TP モニタ起動時に作成され、停止時に削除されます。共有メモリが残っていなければ、このファイル自体が残っていてもTP モニタの起動に影響はありません。

問題の検出方法

    異常終了が発生した場合は、syslogやWebOTX のログにメッセージ出力されます。また、TP モニタの親プロセスであるtpmonitor を監視しておくことで、運用中のTP モニタプロセスの異常終了を発見することができます。イベントログメッセージに関しては、前述のメッセージの他、[ メッセージ一覧 ] を参照してください。プロセスの監視に関しては、[ 高度な管理と運用サイクルガイド > 4. 監視 > 4.1. プロセス監視 ] を参照してください。

採取資料
復旧方法

    共有メモリが残っている場合は、マシン再起動により復旧してください。復旧しない場合、TPモニタプロセスが終了した原因を前後のメッセージから判断し、原因を取り除いてから再起動してください。 UNIXかつ運用ユーザでWebOTXを運用している場合、マシンの再起動をしなくても復旧することができます。以下2つの方法のうちどちらかを行い復旧してください。 rootユーザでWebOTXを運用している場合、あるいはWindowsの場合は共有メモリ(IPC資源)の削除コマンドは使用できません。
    この方法での復旧はどうしてもマシン再起動が許されない場合に限り行ってください。通常はマシン再起動での復旧を行ってください。

    全てのドメインの共有メモリを削除する方法
    1. 全てのドメインを停止してください。
      otxadmin> stop-domain <ドメイン名>
      
    2. WebOTX関連プロセスが残っていた場合は、以下のコマンドで終了させてください。
      otxadmin> stop-domain --force <ドメイン名>
      
    3. 運用ユーザでマシンにログインし、以下のコマンドで共有メモリ(IPC資源)の削除を行ってください。
      suコマンドを使う場合は、"-"オプションつきのsuコマンドで運用ユーザになってください。
      > ${AS_INSTALL}/Trnsv/bin/wormipc
      
    4. rootユーザで以下のコマンドで行ってください。このコマンドはIPC以外の共有メモリの再作成を行います。

      HP-UX

      # /sbin/init.d/WebOTXinit93 stop
      # /sbin/init.d/WebOTXinit93 start
      

      Linux

      SysVinitの場合:

      # /etc/init.d/WebOTXinit93 stop
      # /etc/init.d/WebOTXinit93 start
      

      systemdの場合:

      # systemctl stop WebOTXinit93
      # systemctl start WebOTXinit93
      
    5. ドメインを起動してください。
      otxadmin> start-domain <ドメイン名>
      
    該当のドメインの共有メモリを削除する方法
    1. 該当のドメインを停止してください。
      otxadmin> stop-domain <ドメイン名>
      
    2. 残存プロセスの確認
      運用ユーザでtpspsコマンドを実行し、残存プロセスを確認します。
      ※tpspsコマンドの一番上に表示されるtpmMainは存在しません。
      > ${AS_INSTALL}/Trnsv/command/tpsps -n <該当ドメインのTPシステム名>
      ********** PROCESS INFO *******************************************************
      PID       :COMD            :CLASS
      15288     :tpmMain         :
      15289     :systpp          :SYSTPP_CLS
      15290     :iioplsn         :IIOPLSN_CLS
      15291     :TIMMSGSND       :TIMER
      15292     :tpssendtpp      :SNDTPP_CLS
      15293     :jnlwrt          :JNLWRT_CLS
      15294     :wosystpp        :WOSYSTPP
      *******************************************************************************
      
    3. プロセスの確認と停止
      tpspsコマンドのCOMD列に表示されるプロセス名とpsコマンドのCOMMAND列プロセス名が同じことを確認します。
      同じ場合、WebOTXのプロセスが存在しています。
      > ps -ef | grep <tpspsコマンドのPID>
      
      psコマンドで表示されるプロセスIDに対してrootユーザでKILLシグナルを送信しプロセスを停止させます。
      # kill -KILL <psコマンドのPID>
      
    4. 残存共有メモリの確認
      運用ユーザでtpsipcsコマンドを実行し、残存共有メモリを確認します。
      > ${AS_INSTALL}/Trnsv/command/tpsipcs -n <該当ドメインのTPシステム名>
      ID                      KEY                     USE
      Message Queues:
      040894489               0x4f4c3013              from TPmonitor
      :                      :                      :
      Shared Memory:
      005799941               0x73676d13              for system message
      :                      :                      :
      Semaphores:
      000036881               0x73676d13              for system message
      :                      :                      :
      
    5. 共有メモリの確認と削除
      tpsipcsで確認したIDを利用しipcsコマンドで共有メモリの存在を確認します。
      確認出来た資源に対してrootユーザでipcrmコマンドを使用し削除を行います。
      メッセージキュー(Message Queues)
      > ipcs -q | grep <tpsipcsコマンドのID列のIPCキューID>※
      # ipcrm -q <ipcsで存在が確認できたID>
      
      共有メモリ(Shared Memory)
      > ipcs -m | grep <tpsipcsコマンドのID列の共有メモリID>※
      # ipcrm -m <ipcsで存在が確認できたID>
      
      セマフォ(Semaphores)
      > ipcs -s | grep <tpsipcsコマンドのID列のセマフォID>※
      # ipcrm -s <ipcsで存在が確認できたID>
      
      ※9桁で表示していますが、ここに指定する時は先頭の0を削除してください。
      <例> tpsps で表示されるIDが 000012345 の場合、12345 を指定

    6. ドメインを起動してください。
      otxadmin> start-domain <ドメイン名>
      

予防のための対策

    TPモニタプロセスは、killコマンド等で停止された場合は正常に停止しない可能性があります。killを使用せず、WebOTX提供のコマンドを利用してください。なお、共有メモリ(IPC資源)の削除コマンド(wormipc)は、通常運用時は実行しないでください。共有メモリが削除され、正常動作しなくなる可能性があります。


関連情報

    2. 障害解析 > 2.3. 障害の種類から > 2.3.1. サービス起動失敗・異常終了

    2. 障害解析 > 2.4. 機能別リンク > 2.4.1. TPシステム(Standard/Enterprise)