サーバポート未開設への対応

事象説明

    サーバは起動しているがプロセスが起動していない場合にオペレーション呼び出しに失敗し、COM_FAILURE(REFUSE)が返り、クライアントからのアクセスがエラーとなります(ユーザ実装による)。例えば以下の状況が考えられます。

状況の確認方法

対象サーバの状態確認
呼び出し対象のドメインやTPシステムが終了していないか確認します。
詳細はWebOTX の起動失敗について TPモニタ・マネージャライフサイクルの起動停止失敗について
oadの確認
oadプロセスが終了していないか確認します。
異常終了時は、システムログに以下のメッセージが出力されます。

OTX01180035:state is failed:domain1:j2eeType=WebOTXObjectBrokerOadService,name=WebOTXObjectBrokerOadService,J2EEServer=server,category=runtime (com.nec.webotx.enterprise.system.notification)
WebOTX_Agent: OTX01180012:is not alive :domain1:category=monitor,type=alive-check-monitor,J2EEServer=server,name=WebOTXObjectBrokerOadService-state (com.nec.webotx.enterprise.system.notification)

また、念のため、該当ポートがListen状態かnetstatで確認してください。
名前サーバの確認
名前サーバ(namasv)が終了していないか確認します。
異常終了時は、シスログに以下のメッセージが出力されます。

WebOTX_Agent: OTX01180035:state is failed:domain1:j2eeType=WebOTXCOSNamingService,name=WebOTXCOSNamingService,J2EEServer=server,category=runtime (com.nec.webotx.enterprise.system.notification)
WebOTX_Agent: OTX01180012:is not alive :domain1:category=monitor,type=alive-check-monitor,J2EEServer=server,name=WebOTXCOSNamingService-state (com.nec.webotx.enterprise.system.notification)

また、念のため、該当ポートがListen状態かnetstatで確認してください。該当ポートがListen状態になっていたにも関わらずプロセス起動していなかった場合、他プロセスとポートの重複が発生した可能性があります。その場合、シスログに以下のメッセージが出力されます。

WebOTX_Agent: OTX04090001 getServerItem error (com.nec.webotx.enterprise.system.jndisp)org.omg.CORBA.OBJECT_NOT_EXIST: Cannot find servant vmcid: 0x0 minor code: 1220 completed: No

名前サーバが起動失敗した場合は、ObjectBroker Lifecycle の起動に失敗した旨のエラーが出力されます。

WebOTX_Agent: OTX06000010 ObjectBroker Lifecycle Ready Error.{0} (com.nec.webotx.enterprise.system.objectbroker)org.omg.CORBA.NO_RESPONSE: Initial reference for NameService not found. (hostname.nec.co.jp) jp.co.nec.orb.Ob.OadPackage.NotFound: IDL:Ob/Oad/NotFound:1.0 vmcid: 0x1000 minor code: 996 completed: No

また、EJBコンテナやJNDIサーバなどで、名前サーバが起動していないというエラーになります

WebOTX_Agent: OTX03020068: Exception in creating EJB container [org.omg.CORBA.NO_RESPONSE: Initial reference for NameService not found. (hostname.nec.co.jp) jp.co.nec.orb.Ob.OadPackage.NotFound: IDL:Ob/Oad/NotFound:1.0 vmcid: 0x1000 minor code: 996 completed: No] (com.nec.webotx.enterprise.system.container.ejb)

WebOTX_Agent: OTX01205021: Application NOT loaded: [MEjbApp] (com.nec.webotx.enterprise.system.core)
JNDIサーバの確認
JNDIサーバが終了していないか確認します。
運用管理コマンドからは以下のコマンドで確認できます(1:起動 3:停止 4: 起動停止処理失敗)。

otxadmin> get server.internal-lifecycle-module.JNDIService.state

また、前述の名前サーバが起動していないためにJNDIサーバの起動に失敗する可能性もあります。前述のログを確認してください。
その他の詳細はJNDIの障害への対応を参照してください。
IIOPリスナの確認
unixはpsコマンドで、Windowsはタスクマネージャでiioplsn(WindowsはIIOPLsn.exe)の起動状態を確認します。${INSTANCE ROOT}/config/tpsystem/history.actでも確認できます。念のため、該当ポートがListen状態かnetstatで確認してください。異常終了している場合はIIOPリスナ異常終了/未起動への対応を参照してください。
設定の確認
サーバが正しく起動している場合、そこに向けてリクエストが飛んでいないことが考えられます。クライアントからサーバまでの呼び出しルートを確認してください。

問題の検出方法

異常終了が発生した場合は、イベントログやWebOTXのログにメッセージ出力されます。また、エージェントプロセスを監視しておくことで、運用中のエージェントプロセスの異常終了を発見することができます。
イベントログメッセージに関しては、前述のメッセージの他、「WebOTXマニュアル オペレータメッセージ編」を参照してください。
プロセスの監視に関しては、「WebOTXトラブルシューティング(概要)―3.1プロセス監視 」を参照してください。

採取資料

個別の資料詳細に関しては、 「WebOTXトラブルシューティング(概要)―2.2モジュール別採取情報」 を参照してください。

また、可能であれば、想定外のIPアドレス/ポート番号にリクエストを飛ばしている可能性があるのでクライアント側で ObjectBrokerのトレースとネットワークトレースを採取し、どこに飛ばしているか確認します。 トレースの採取方法については「ロギング編」を参照してください。

復旧方法

以下の手段で復旧してください。
  1. rootユーザでWebOTXを停止してください。
    /sbin/init.d/WOAgentSvc stop (HP-UX)
    /etc/init.d/ WOAgentSvc stop (Solaris,Linux)

  2. WebOTX関連プロセスが残っていた場合は、以下のコマンドで終了させてください。
    otxadmin> stop-domain --force <ドメイン名>

  3. rootユーザでWebOTXを起動してください。
    /sbin/init.d/WOAgentSvc start (HP-UX)
    /etc/init.d/ WOAgentSvc start (Solaris,Linux)
WebOTXの停止時、一部のプロセスが残ってしまった場合、次回起動時に正常起動しない可能性があります。 stop-domain --force実行後、確実に停止したことを確認してください。
復旧しなかった場合は、マシン再起動してください。

なお、設定ミスやファイル破損によって起動に失敗した場合は、再起動では復旧しません。 ここの項目を確認してください。

呼び出し対象のドメインやTPシステム
詳細はWebOTXの起動失敗についてTPモニタ・マネージャライフサイクルの起動停止失敗について を参照してください。
oad
他プロセスとポートの重複が発生した場合は、重複しない値を設定しなおしてください。
運用管理コマンドでは以下のように指定します。

otxadmin> set server.objectbrokerservice.oad.OadPort=9825 (既定値: 9825)

その他、例外と対処に関しての詳細はObject Broker の障害解析を参照してください。
名前サーバ
破損ファイルが原因で起動に失敗していた場合は、以下の方法で復旧してください。
  1. rootユーザでWebOTXを停止してください。
    /sbin/init.d/WOAgentSvc stop (HP-UX)
    /etc/init.d/ WOAgentSvc stop (Solaris, Linux)

  2. WebOTX関連プロセスが残っていた場合は、以下のコマンドで終了させてください。
    otxadmin> stop-domain --force <ドメイン名>

  3. ${INSTANSE_ROOT}/config/ObjectBroker/namesv.ndf のバックアップがあればそれで復旧、なければ、namesv.ndf を削除してからドメインを再起動してください。

  4. rootユーザでWebOTXを起動してください。
    /sbin/init.d/WOAgentSvc start (HP-UX)
    /etc/init.d/ WOAgentSvc start (Solaris, Linux)

namesv.ndfを削除した場合、名前サーバに永続的に登録してある情報はすべて失われるため、名前サーバにIORの再登録が必要となります。
該当ポートがListen状態になっていたにも関わらずプロセス起動していなかった場合、他プロセスとポートの重複が発生した可能性があります。重複しない値を設定しなおしてください。
運用管理コマンドでは以下のように指定します。

otxadmin> set server.objectbrokerservice.namesv.NameServicePort=2809 (既定値: 2809)
JNDIサーバ
詳細はJNDIの障害への対応を参照してください。
IIOPリスナ
詳細はIIOPリスナ異常終了/未起動への対応を参照してください。
設定
クライアントからサーバまでの呼び出しルートを正しく設定してください。
リファレンス
リファレンス内容を確認した結果、変更が必要な場合は値を変更後、リファレンスを再登録してください。コマンドの詳細は、「運用管理コマンドリファレンスマニュアル」→「運用管理エージェント 運用管理コマンド(otxadmin)」あるいは「TPモニタ」を参照してください。

リファレンス登録用の設定
otxadmin> set tpsystem.serverName=接続サーバ名
otxadmin> set tpsystem.nameSvHostName=名前サーバ名
otxadmin> set tpsystem.nameSvPort=ポート番号 (0を指定すると、そのドメインで設定した名前サーバポートを使用します)
リファレンス登録、削除
otxadmin> bind-ior --application application_name --component component_name [--bean bean_name] --interface interface_name [urlname]
otxadmin> unbind-ior --application application_name --component component_name [--bean bean_name] --interface interface_name [urlname]

予防のための対策

WebOTX(ドメイン)が完全に停止する前にマシンのシャットダウンが行われると、namesv.ndfが書き込みを終了する前にプロセスが停止されてしまい、namesv.ndfが破損する可能性があります。マシンシャットダウン前にWebOTXを停止するように運用方法を変更してください。

設定は、クライアント(Webサーバ)からサーバまで、正しくリクエストが到達できるように設定してください。

ポート番号はサーバマシン内で重複しないように設定してください。
ポート番号設定が重複していなくても、そのポートを別プロセスに使用されているときに起動しようとすると、ソケットのbindに失敗して起動失敗となります。名前サーバ(Namesv.exe)のポートは既定値が2809であるため、Windowsの場合特に一時ポートとして他プロセスに使用される可能性があります。
特定のポート番号を一時ポート番号として使用されないようにするには、レジストリに以下の設定を行なう必要があります。
キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
配下に以下の項目を追加します。
名前:ReservedPorts
種類:REG_MULTI_SZ
値:一時ポート番号として使用されない範囲 (xxxx-yyyyの形式でポートの範囲を指定)
例)2000番から2100番までを指定する場合
     2000-2100
設定変更後はマシンの再起動が必要です。
詳細は、次のURLを参照してください。
登録済みポートを一時ポートとして使用させない方法 http://support.microsoft.com/default.aspx?scid=kb;ja;813122
その他、個別の詳細はWebOTX の起動失敗について TPモニタ・マネージャライフサイクルの起動停止失敗についてIIOPリスナ異常終了/未起動への対応を参照してください。

対象となるエラー事象

COM_FAILURE(REFUSE)

関連情報

    TPモニタ・マネージャライフサイクルの起動停止失敗について

    IIOPリスナ異常終了/未起動への対応

    JNDIの障害への対応

    Object Broker の障害解析

    ロギング編

    トラブルシューティング(概要) 2.2 モジュール別採取情報

    トラブルシューティング(概要) 3.1 プロセス監視

    トラブルシューティング(概要) 3.9.2 WebOTXの起動失敗について

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