3.2. Standard上のアプリケーションのログ出力

Standardにおけるサーバアプリケーションに関するログについて説明します。サーバアプリケーションの動作に問題がある場合に参照すべきログについて説明します。

WebOTXにはシステムやプロセスの稼動状況を示すために様々なトレースファイルが存在します。 何か異常が起こったときは以下に説明するファイルを参照してください。

この表の上位4つのファイルで、ほとんどの場合に対処可能です。トレースレベルを最大にすると通常運用に支障が出る場合もあります。最大よりは1ないし2つほど下げて運用してください。デバッグ時は常に最大にしてください。これらのファイルについてはファイルの読み方とエラー番号一覧 (別のセクションにあるものもあります)を示します。

また、下位2つは上位4つでも判らない時に採取するログです。通常運用には耐えられないほどのログが出ますので、デバッグ時や開発元からの依頼があった時のみ採取願います。下位 2つのファイルに関しては採取方法のみ示します。

トレース一覧
トレース種別 トレース内容
サーバアプリケーショントレース(Java) WebOTXのトレースとユーザトレース(TPSUserTrace())をマージして出力します。
システムトレース プロセス起動時の情報やアプリケーションで検出したエラーの情報が出力します。
イベントログ(Windows)、syslog(UNIX系OS) WebOTX内部で異常が発生した時に異常の内容を出力します。
サーバアプリケーション内部トレース サーバアプリケーションの下位層(スレッド管理やメッセージ管理など)の状況を出力します。
IIOPリスナ内部トレース クライアントからの要求を管理する部分と下位層(ソケット管理やメッセージ管理など)の状況を出力します。

3.2.1. サーバアプリケーショントレース採取

サーバアプリケーションのログについて説明します。

サーバアプリケーションログ一覧
ファイル名 ディレクトリ サイズ 説明
${PGNAME}.${PID}.log ${INSTANCE_ROOT}
/logs/tpsystem
/${APGNAME}/${PGNAME}
ユーザ
指定値
サーバアプリケーショントレースを採取するには統合運用管理ツールで設定する必要があります。統合運用管理ツールにてプロセスグループのアイコンを選択し、[トレース設定]タブをクリックして[トレース設定]ページを表示してください。このページにある[トレースレベル]が、[出力しない]になっていないことを確認してください。次に、トレースファイルの最大サイズを確認してください(既定値 1024 KBytes)。トレースファイル名を確認してください。最後にトレースレベルを確認してください(既定値5)。トレースファイルはトレースファイルの最大サイズに達すると、ファイル名に ".bak" を付加してバックアップファイルを作成します。そして、新規にトレースファイルを作成します。バックアップは一回分しか残しません。WebOTX以外のアプリケーションからサーバアプリケーショントレースにログを出力しても、サイズ算定に含まれません。最大サイズのチェックは出力毎であるため、指定された最大サイズとバックアップされたファイルのサイズは、必ず同じになるわけではありません。サーバアプリケーション中からトレースファイルにトレースを出力するにはjava.lang.System.out.println()を使用してください。トレースレベルが5(LOG_NOTICE)の場合、WebOTXとしてエラー以外は何も出力しません。
${PGNAME}_sys.${PID}.log ${INSTANCE_ROOT}
/logs/tpsystem
/${APGNAME}/${PGNAME}
ユーザ
指定値
システムトレースファイルです。プロセス起動時の情報やアプリケーションで検出したエラーの情報が出力されます。アプリケーションでスタック情報採取を行ったときにも出力されます。上記以外の機会に出力されることはありません。(既定値 1024 KBytes)。
${PGNAME}_recovery.${PID}.log ${INSTANCE_ROOT}
/logs/tpsystem
/${APGNAME}/${PGNAME}
1MB プロセス異常終了によりプロセスグループが停止した場合に出力されます。
${PGNAME}.${TIME}.${PID}.log ,
${PGNAME}_sys.${TIME}.${PID}.log ,
${PGNAME}_recovery.${TIME}.${PID}.log
${INSTANCE_ROOT}
/logs/tpsystem
/${APGNAME}/${PGNAME}/save
ユーザ
指定値
プロセス終了時及びプロセスグループ起動時に、使用していないサーバアプリケーショントレースファイルをsaveディレクトリに退避します。saveディレクトリに退避されたログはプロセス異常終了時の障害解析等で必要になる場合がありますが、任意のタイミングでsaveディレクトリを退避あるいは削除することができます。一定期間(既定値30日)経過したログは自動で削除されます。なお、saveディレクトリに退避されていないログは運用中のプロセスのログなので削除しないでください。

3.2.2. トレースの読み方(Java)

サーバアプリケーションログは以下のような形式になっています。

サーバアプリケーションログ レベル別出力形式
ログレベル メッセージ
ログレベル1〜3 yyyy/mm/dd HH:MM:SS.sss|TTT: Error: メッセージ
ログレベル4〜7 yyyy/mm/dd HH:MM:SS.sss|TTT: メッセージ

yyyy 西暦 mmdd

HH 時(00〜23) MM 分(00〜59) SS 秒(00〜59) sss ミリ秒

xxxxxxxx:エラーID(無い場合もあります) TTT:論理スレッド番号 メッセージ:メッセージ本文

WebOTXのサーバアプリケーションが出力するログの中にErrorが出力される場合は何か異常が起きています。主に初期化時にエラーが出るため、ここでは初期化時に発生しうるエラー一覧を載せますが、他のエラーが出ている場合は開発元に連絡してください。

エラーメッセージ一覧
エラーメッセージ 原因 対処
Can't get catalog directory. 環境変数 TPM_CAT_DIR の取得に失敗しました。 メモリが不足している可能性があります。OS再起動してください。それでも解決しない場合は、可能ならWebOTXを再インストールしてください。
Can't get application server name. 環境変数TPM_AP_CLASSの取得に失敗しました。 メモリ不足の可能性があります。マシンのメモリ使用量を確認してください。
Can't get TP_HOME. 環境変数 TP_HOME の取得に失敗しました。 WebOTXのインストール情報が壊れている可能性があります。可能なら再インストールしてください。
WG2 file is invalid. コンポーネント定義ファイル(WG2ファイル)が不正です。 コンポーネント定義ファイル(WG2ファイル)が壊れている可能性があります。可能ならドメインのリストアをしてください。リストアについては[ バックアップ/リストア ]を参照してください。
Can't read wc2 file. コンポーネント定義ファイル(wc2)ファイルの読み込みに失敗しました。 コンポーネント定義ファイル(wc2ファイル)が壊れている可能性があります。可能なら対象のコンポーネントの再配備してください。
Cannot initialize Winsock. WinSockの初期化に失敗しました。 WSock32.dllのバージョン(1.1以上が利用可能か)を確認してください。
Can't access naming mutex object. 名前サーバアクセス用Mutexの生成に失敗しました。 メモリ不足の可能性があります。マシンのメモリ使用量を確認してください。
Failed in acquiring the port number of the asynchronous message. サービスのポートに、IIOPリスナ(アライブチェック)用ポートが設定されていません。 /etc/services に”webotx-mess”という名前のサービスを追加してください。
Cannot load ObjectManagerComponent. WebOTXのライブラリのロードに失敗しました。 WebOTXのインストール情報が壊れている可能性があります。可能なら再インストールしてください。
Can't get mutex object for VISConnector. VISコネクタ制御用のMutexオブジェクトの生成ができませんでした。 メモリ不足の可能性があります。マシンのメモリ使用量を確認してください。UNIX系OSの場合、共有メモリが破壊された恐れがあります。マシン再起動が必要かもしれません。
set PATH failed. PATH環境変数の設定に失敗しました。 メモリ不足の可能性があります。マシンのメモリ使用量を確認してください。UNIX系OSの場合、共有メモリが破壊された恐れがあります。マシン再起動が必要かもしれません。
load library error. (jvm.dll) : errno=XX,msg=XX JavaVMのロードに失敗しました。 JDKまたはJREのインストール情報が壊れている可能性があります。JDKまたはJREを再インストールしてください。
find function error. (JNI_CreateJavaVM) : errno=XX, msg=XX JavaVMの初期化関数を見つけられませんでした。 JavaVMのDLLが壊れています。
Can't alloc main object. Javaオブジェクトの生成に失敗しました。 WOTXMAIN.jarが壊れているか改ざんされている恐れがあります。またはメモリが不足している可能性があります。OS再起動してください。それでも解決しない場合は、可能ならWebOTXを再インストールしてください。
Can't create server object. サーバオブジェクトの生成ができませんでした。 サーバオブジェクトのコンストラクタ内で例外が発生する要因が無いか調べてください。
CORBANameServer.bind() failed. 名前サーバへのオブジェクトのバインドに失敗しました。 名前サーバが正しく稼動しているか、orbmanag.exe(Object Brokerのツール)で確認してください。
OTXSCur.TransactionService.init() is error. WebOTX Transactionサービスの初期化に失敗しました。 WebOTX Transactionサービスのログを確認して対処してください。
APProlog abnormally done. アプリケーションの初期化に失敗しました。 上記エラーが出た場合に出力されます。この前のエラーメッセージを見て対処してください。
Thread does not have initialized(ret=XX). スレッドの初期化に失敗しました。 上記エラーが出た場合に出力されます。この前のエラーメッセージを見て対処してください。
AbortExit(exitkey=XX, endkey=XX). 例外が発生しました(開始) 例外が発生したので、後処理を開始しました。
AbortExit(exitkey=XX, endkey=XX)(finished). 例外が発生しました(終了) 例外の後処理が完了しました。
Disconnecting terminal(XXXXXX). クライアントとのセションが切れました(開始) CreateServerObject()を呼び出した後、ReleaseServerObject()を呼び出す前にクライアントアプリケーションが終了したと思われます。クライアントアプリケーション側でReleaseServerObjectを呼ばずに終了する箇所があれば、通常のクライアントアプリケーション終了時にも出力される可能性があります。また、このメッセージは対象とするクライアントアプリケーションが使用しているはアプリケーショングループ内の全プロセスに通知されます。
Disconnecting terminal(XXXXXX)(finished). クライアントとのセションが切れました(開始) クライアントとのセッションが切れた処理が完了しました。
The following TX execution is unfinished このエラーメッセージに記述されたオペレーションの実行途中にプロセスが終了しました。 イベントログ(syslog)を確認し、原因を判別してください。該当オペレーションに問題がないか確認してください。

3.2.3. サーバアプリケーション内部トレースの採取方法

サーバアプリケーショントレース(Java)では主にオブジェクト管理部分のトレースを出力します。

これより低レベルの情報(スレッド管理、メッセージ管理、プロセス監視など)を表示する方法があります。かなりの量のトレースを出力するため、プロセスが起動しないときや、明らかに動作がおかしいとき、開発元に調査依頼を行う時などのみ採取すべきです。

以下にサーバアプリケーション内部トレースの採取方法を示します。

この設定により、内部ログの初めの部分が/tmp/servertrc.txtに出力され、続きがサーバアプリケーショントレースに出力されます。ファイルに情報が出力されていることを確認し、開発元に送付してください。

ファイルの採取が終わりましたら、環境定義ファイルを元に戻してください。コマンドライン引数の-OltpTplibTraceも削除してください。

3.2.4. IIOPリスナ内部トレースの採取方法

IIOPリスナは普段はクライアントからの要求を適切なサーバアプリケーションに振り分ける処理を行います。もし、クライアントからの通信が行えなかったり、サーバアプリケーションに正しく要求が届かなかったりする場合は、IIOPリスナのトレースを採取して開発元に送付してください。

この設定は大量のトレースを出力し、性能に影響を及ぼすため、通常時は採取しないようにしてください。

IIOPリスナは二つのトレースファイルから構成されます。一つは通信管理部分で、もう一つは振り分け部分になります。

通信管理部分のトレース

以下のコマンドでログを出力することができます。

otxadmin > set tpsystem.IIOPListener.collectIiopManagementLog=true

このログは開発環境での障害発生時に採取を依頼する場合があります。通常の運用ではユーザは意識する必要はありません。

振り分け部分のトレース

以下のコマンドでログを出力することができます。

otxadmin > set tpsystem.IIOPListener.collectIiopControlLog=true

このログは障害発生時に採取を依頼する場合があります。通常の運用ではユーザは意識する必要はありません。
ログファイルのサイズが32KBを超えると新しいログファイルが作成されます。古いログファイルは<ログファイル名.bak>として保存されます。ログは2世代で、世代数の変更はできません。

以上の設定を行い、該当するTPシステムを再起動してください。上記ファイルにファイルに情報が出力されていることを確認し、開発元に送付してください。

ファイルの採取が完了した後は、上記の変更を全て元に戻してください。

3.2.5. AJPリスナ内部トレースの採取方法

AJPリスナは普段はWebサーバからの要求を適切なサーバアプリケーションに振り分ける処理を行います。もし、Webサーバからの通信が行えなかったり、サーバアプリケーションに正しく要求が届かなかったりする場合は、AJPリスナのトレースを採取して開発元に送付してください。

この設定は大量のトレースを出力し、性能に影響を及ぼすため、通常時は採取しないようにしてください。

AJPリスナは二つのトレースファイルから構成されます。一つは通信管理部分で、もう一つは振り分け部分になります。

通信管理部分のトレース

以下のコマンドでログを出力することができます。

otxadmin > set tpsystem.AJPListener.collectAjpManagementLog=true

このログは開発環境での障害発生時に採取を依頼する場合があります。通常の運用ではユーザは意識する必要はありません。

振り分け部分のトレース

以下のコマンドでログを出力することができます。

otxadmin > set tpsystem.AJPListener.collectAjpControlLog=true

このログは障害発生時に採取を依頼する場合があります。通常の運用ではユーザは意識する必要はありません。
ログファイルのサイズが32KBを超えると新しいログファイルが作成されます。古いログファイルは<ログファイル名.bak>として保存されます。ログは2世代で、世代数の変更はできません。

以上の設定を行い、該当するTPシステムを再起動してください。上記ファイルにファイルに情報が出力されていることを確認し、開発元に送付してください。

ファイルの採取が完了した後は、上記の変更を全て元に戻してください。