7.7.17 コマンドアダプタ実行時の障害対策
コマンドアダプタでは,システムの性能を検証したり,障害の原因を解析したりするための情報が,ログファイルまたはトレースファイルに出力されます。コマンドアダプタで出力されるログおよびトレースの種類を次の表に示します。
ログ・トレース |
出力情報 |
説明 |
---|---|---|
メッセージログ |
コマンドアダプタで発生した各種情報が,メッセージとして出力されます。 |
稼働情報(起動・停止・障害など)をメッセージとして確認できます。なお,メッセージログの出力先は,アプリケーションサーバおよびサービスプラットフォーム全体で共通のため,システムの稼働状況を一括して確認できます。 |
メンテナンスログ |
コマンドアダプタ内部の保守情報として,次の情報が出力されます。
|
内部メソッドの発行時刻およびシーケンスを確認できます。 |
性能解析トレース |
サービスプラットフォームシステム全体の性能解析トレース取得ポイントで,次の情報が出力されます。
コマンドアダプタの性能解析トレース取得ポイントでは,コマンドアダプタ固有の情報が出力されます。 |
サービスリクエスタから要求を受け付けて,実行結果を返却するまでの一連の処理で出力される性能解析情報を基に,サービスプラットフォームシステムの性能を検証できます。 |
例外ログ |
コマンドアダプタで発生した例外情報(スタックトレース)が出力されます。 |
コマンドアダプタの例外情報を確認できます。障害要因の解析に利用できます。 |
- 〈この項の構成〉
(1) snapshotログ
mngsvrutilコマンドやsnapshotlogコマンドでの採取対象にコマンドアダプタを追加するには,snapshotログ収集対象定義ファイルの修正が必要な場合があります。
サービスプラットフォームが提供するほかのサービスアダプタと同じレベルの収集設定とする場合には,次に示す内容をそれぞれのファイルに追記してください。すでに記述されている場合は修正不要です。
(a) snapshotlog.conf
${cosminexus.home}/CC/server/public/ejb/.+/logs/CSCADP/ADPCMD/maintenance/.+/cscadpcmdexp_.*\.log &{ejb.public.directory}/ejb/.+/logs/CSCADP/ADPCMD/maintenance/.+/cscadpcmdexp_.*\.log &{ejb.server.log.directory}/CSCADP/ADPCMD/maintenance/.+/cscadpcmdexp_.*\.log ${cosminexus.home}/CSC/custom-adapter/Command/config/.+ ${cosminexus.home}/CSC/custom-adapter/Command/config/.+/.+
(b) snapshotlog2.conf
${cosminexus.home}/CC/server/public/ejb/.+/logs/CSCADP/ADPCMD/maintenance/.+/cscadpcmdmnt_.*\.log &{ejb.public.directory}/ejb/.+/logs/CSCADP/ADPCMD/maintenance/.+/cscadpcmdmnt_.*\.log &{ejb.server.log.directory}/CSCADP/ADPCMD/maintenance/.+/cscadpcmdmnt_.*\.log
(c) snapshotlog.param.conf
${cosminexus.home}/CSC/custom-adapter/Command/config/.+ ${cosminexus.home}/CSC/custom-adapter/Command/config/.+/.+
(2) メッセージログ
メッセージログのJ2EEサーバの稼働ログに,コマンドアダプタで発生した各種情報がメッセージとして出力されます。
メッセージログの出力内容や出力先については,「7.4.1 メッセージログ」を参照してください。
(a) 出力レベル設定
コマンドアダプタが出力するメッセージのうち,どのレベルまでメッセージログに出力するかを設定できます。メッセージの情報種別と,設定値との対応を次に示します。
情報種別 |
出力レベル |
||
---|---|---|---|
0 |
10 |
20 |
|
エラーメッセージ
|
○ |
○ |
○ |
警告メッセージ
|
△ |
○ |
○ |
インフォメーションメッセージ
|
△ |
△ |
○ |
出力レベルは,コマンドアダプタ実行環境プロパティファイルで設定できます。プロパティキーを次の表に示します。
設定 |
キー |
デフォルト値 |
指定可能値 |
---|---|---|---|
メッセージログの出力レベル |
adpcmd.log.messagelog.level |
10 |
0 10 20 |
(b) 出力先
メッセージログの出力先を次に示します。
J2EEサーバ稼働ログの出力先に指定されたパス
J2EEサーバ稼働ログの出力先は,HCSCサーバが動作するJ2EEサーバ用オプション定義ファイル(usrconf.cfg)のejb.server.log.directoryキーで指定します。詳細は,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.2.2 usrconf.cfg(J2EEサーバ用オプション定義ファイル)」,および「2.2.3 usrconf.properties(J2EEサーバ用ユーザプロパティファイル)」を参照してください。
メッセージログのログファイル名を次の表に示します。
ログファイルの出力モード |
ログファイル名 |
---|---|
ラップアラウンドモードの場合 |
cjmessage<面数>.log※ |
シフトモードの場合 |
cjmessage.log※ |
(c) ファイル面数
出力ファイル面数は,HCSCサーバが動作するJ2EEサーバ用ユーザプロパティファイル(usrconf.properties)のejbserver.logger.channels.define.<チャネル名>.filenumキーで指定します。詳細については,次に示すマニュアルを参照してください。
-
推奨モードの場合
マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.2.3 usrconf.properties(J2EEサーバ用ユーザプロパティファイル)」
-
V9互換モードの場合
マニュアル「アプリケーションサーバ 機能解説 互換編」の「10.1.1 usrconf.properties(J2EEサーバ用ユーザプロパティファイル)」
(d) ファイルサイズ
出力ファイルサイズは,HCSCサーバが動作するJ2EEサーバ用ユーザプロパティファイル(usrconf.properties)のejbserver.logger.channels.define.<チャネル名>.filesizeキーで指定します。詳細については,次に示すマニュアルを参照してください。
-
推奨モードの場合
マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「2.2.3 usrconf.properties(J2EEサーバ用ユーザプロパティファイル)」
-
V9互換モードの場合
マニュアル「アプリケーションサーバ 機能解説 互換編」の「10.1.1 usrconf.properties(J2EEサーバ用ユーザプロパティファイル)」
(3) メンテナンスログ
コマンドアダプタの内部メソッド発行の時刻やシーケンスを確認できます。保守員が障害解析のために使用します。
(a) 出力レベル設定
どのレベルまでメンテナンスログに出力するかを設定できます。出力する情報種別と,設定値との対応を次の表に示します。
情報種別 |
出力レベル |
||||
---|---|---|---|---|---|
1 |
2 |
3 |
4 |
5 |
|
エラー情報,例外発生原因 |
○ |
○ |
○ |
○ |
○ |
主要外部モジュールのインターフェース情報
|
× |
○ |
○ |
○ |
○ |
外部モジュールのインターフェース情報
|
× |
× |
○ |
○ |
○ |
主要なコンポーネント内インターフェース情報 |
× |
× |
× |
○ |
○ |
デバッグ情報 |
× |
× |
× |
× |
○ |
出力レベルは,コマンドアダプタ実行環境プロパティファイルで設定できます。プロパティキーを次の表に示します。
設定 |
キー |
デフォルト値 |
指定可能値 |
---|---|---|---|
メンテナンスログの出力レベル |
adpcmd.log.methodtrace.level |
3 |
1 2 3 4 5 |
(b) 出力形式
メンテナンスログの出力形式を次の図に示します。
(c) 出力される内容
メンテナンスログに出力される内容を次の表に示します。
項目 |
内容 |
---|---|
番号 |
メンテナンスログの出力通番が表示されます。 |
日付 |
メンテナンスログの取得日付がyyyy/mm/ddの形式で出力されます。
|
時刻 |
メンテナンスログの取得時刻がhh:mm:ss.SSSの形式で出力されます。
|
製品ID |
製品を特定するための識別子として,コマンドアダプタを示す「ADPCMD」と,バージョン情報が出力されます。 バージョン情報の形式は次のとおりです。
|
pid |
プロセスを識別するためのIDが出力されます。 |
tid |
スレッドを識別するためのIDが出力されます。 |
ID,種別 |
表示されません。 |
出力種別 |
メンテナンスログの取得ポイント情報(取得位置)が出力されます。
|
クラス名 |
メンテナンスログを取得するクラス名が出力されます。 |
メソッド名 |
メンテナンスログを取得するメソッド名が出力されます。 |
入出力情報 |
メンテナンスログを取得するメソッドの入出力情報またはスタックトレースが出力されます。 |
CRLF |
レコードの終端符号が出力されます。 |
(d) 出力先
メンテナンスログの出力先を次に示します。
<J2EEサーバのログ出力ディレクトリ>/CSCADP/ADPCMD/maintenance/<サービスID>
メンテナンスログのログファイル名を次の表に示します。
ログファイルの出力モード |
ログファイル名 |
---|---|
ラップアラウンドモードの場合 |
cscadpcmdmnt_<HCSCサーバ名>_<面数>.log |
シフトモードの場合 |
cscadpcmdmnt_<HCSCサーバ名>_.log |
なお,ログファイルの面数はコマンドアダプタ実行環境プロパティファイル,またはコマンドアダプタ実行環境共通プロパティファイルのadpcmd.log.methodtrace.filenumプロパティ,ログファイルのサイズはadpcmd.log.methodtrace.filesizeプロパティで指定します。
コマンドアダプタ実行環境プロパティファイルの詳細は,マニュアル「サービスプラットフォーム リファレンス」の「6.15.3 コマンドアダプタ実行環境プロパティファイル」を参照してください。コマンドアダプタ実行環境共通プロパティファイルについては,マニュアル「サービスプラットフォーム リファレンス」の「6.15.4 コマンドアダプタ実行環境共通プロパティファイル」を参照してください。
(4) 性能解析トレース(PRFトレース)
サービスリクエスタから要求を受け付けて,実行結果を返却するまでの一連の処理で出力される性能解析情報を基に,アプリケーションサーバおよびサービスプラットフォームシステムの性能を検証できます。コマンドアダプタの性能解析トレース取得ポイントでは,コマンドアダプタ固有の情報が出力されます。保守員が性能ボトルネックの解析のために使用します。
(a) 出力形式
性能解析トレースファイルに出力される形式は,J2EEサーバの性能解析トレースと同様です。詳細は,マニュアル「アプリケーションサーバ 機能解説 保守/移行編」の「7.3 Management Serverを利用した性能解析トレースファイルの収集」を参照してください。
(b) 出力先
性能解析トレースの出力先およびトレースファイル名を次の表に示します。
トレースの出力先パス |
トレースファイル名 |
---|---|
<環境変数PRFSPOOLの設定ディレクトリ>\utt\prf\<PRF識別子>\dcopltrc※ |
prf_<n> |
(c) ファイル面数
出力ファイル面数のデフォルトは4面です。出力ファイル面数は,運用管理ポータルまたはcprfコマンドで変更できます。運用管理ポータルの詳細はマニュアル「アプリケーションサーバ 運用管理ポータル操作ガイド」を,cprfコマンドの詳細はマニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。
(d) ファイルサイズ
運用管理ポータルでファイルサイズを設定した場合,ファイルサイズのデフォルトは32MBです。cprfコマンドでファイルサイズを設定した場合,ファイルサイズのデフォルトは8MBです。ファイルサイズは,運用管理ポータルまたはcprfコマンドで変更できます。運用管理ポータルの詳細はマニュアル「アプリケーションサーバ 運用管理ポータル操作ガイド」を,cprfコマンドの詳細はマニュアル「アプリケーションサーバ リファレンス コマンド編」を参照してください。
(e) 性能解析トレースの取得ポイント
性能解析トレースの取得ポイントを次の図に示します。
イベントID,トレース取得ポイント,および性能解析トレース取得レベルを次の表に示します。表の「図中の番号」は,図中の番号と対応しています。
イベントID |
図中の番号 |
トレース取得ポイント |
レベル※1 |
---|---|---|---|
0xab06 |
1 |
リクエスト受付時 |
標準 |
0xab08 |
2 |
外部コマンド起動時 |
標準 |
0xab09 |
3 |
外部コマンドプロセス完了時※2 |
標準 |
0xab07 |
4 |
レスポンス送信時 |
標準 |
(5) 例外ログ
例外ログは,保守用ログと同じタイミングで開始・終了し,例外情報(スタックトレース)を採取してファイルに出力します。例外ログファイルの出力先はコマンドアダプタの保守用ログと同じディレクトリであるため,個別には変更できません。
(a) 出力形式
例外ログに出力される形式を次に示します。
(b) 出力される内容
例外ログに出力される内容を次の表に示します。
項目 |
内容 |
---|---|
番号 |
例外ログの出力通番が表示されます。 |
日付 |
例外ログの取得日付がyyyy/mm/ddの形式で出力されます。
|
時刻 |
例外ログの取得時刻がhh:mm:ss.SSSの形式で出力されます。
|
製品ID |
製品を特定するための識別子として,コマンドアダプタを示す「ADPCMD」が出力されます。 |
pid |
プロセスを識別するためのIDが出力されます。 |
tid |
スレッドを識別するためのIDが出力されます。 |
ID |
空白 |
スタックトレース情報 |
スタックトレース情報が出力されます。 |
CRLF |
レコードの終端符号が出力されます。 |
(c) 出力先
例外ログの出力先を次に示します。
<J2EEサーバのログ出力ディレクトリ>/CSCADP/ADPCMD/maintenance/<サービスID>
例外ログのログファイル名を次の表に示します。
ログファイルの出力モード |
ログファイル名 |
---|---|
ラップアラウンドモードの場合 |
cscadpcmdexp_<HCSCサーバ名>_<面数>.log |
シフトモードの場合 |
cscadpcmdexp_<HCSCサーバ名>_.log |
なお,ログファイルの面数はコマンドアダプタ実行環境プロパティファイル,またはコマンドアダプタ実行環境共通プロパティファイルのadpcmd.log.exptrace.filenumプロパティで,ログファイルのサイズはadpcmd.log.exptrace.filesizeプロパティで指定します。なお,これらのプロパティはコマンドアダプタ実行環境共通プロパティファイルでも指定できます。
コマンドアダプタ実行環境プロパティファイルについては,マニュアル「サービスプラットフォーム リファレンス」の「6.15.3 コマンドアダプタ実行環境プロパティファイル」を参照してください。コマンドアダプタ実行環境共通プロパティファイルについては,マニュアル「サービスプラットフォーム リファレンス」の「6.15.4 コマンドアダプタ実行環境共通プロパティファイル」を参照してください。
(6) 外部コマンドプロセスの標準エラー出力ログ
外部コマンドプロセスの標準エラー出力への出力内容を,ログファイルで確認できます。
(a) 出力可否の設定
コマンドアダプタごとに,標準エラー出力ログ機能の有効または無効を設定できます。コマンドアダプタ実行環境プロパティファイルのプロパティキーを次の表に示します。
設定 |
キー |
デフォルト値 |
指定可能値 |
---|---|---|---|
標準エラー出力ログの有効または無効の設定 |
adpcmd.log.stderr.enable |
true |
true false |
標準エラー出力ログを有効にするには,trueを設定します。
(b) 標準エラー出力の文字コード
コマンドアダプタごとに,標準エラー出力の内容を読み込む際の文字コードを設定できます。コマンドアダプタ実行環境プロパティファイルのプロパティキーを次の表に示します。
設定 |
キー |
デフォルト値 |
指定可能値 |
---|---|---|---|
標準エラー出力の文字コードの設定 |
adpcmd.log.stderr.charset |
UTF-8 |
UTF-8 MS932 EUC-JP |
(c) 出力形式
標準エラー出力ログの出力形式を次の図に示します。
(d) 出力される内容
標準エラー出力ログに出力される内容を次の表に示します。
項目 |
内容 |
---|---|
番号 |
標準エラー出力ログの出力通番が表示されます。 |
日付 |
標準エラー出力ログの取得日付がyyyy/mm/ddの形式で出力されます。
|
時刻 |
標準エラー出力ログの取得時刻がhh:mm:ss.SSSの形式で出力されます。
|
製品ID |
製品を特定するための識別子として,コマンドアダプタを示す「ADPCMD」と,バージョン情報が出力されます。 バージョン情報の形式は次のとおりです。
|
pid |
プロセスを識別するためのIDが出力されます。 |
tid |
スレッドを識別するためのID※が出力されます。 |
ID |
標準エラー出力の内容の場合:空白 外部コマンド起動直後:KDEC81622-Iメッセージ |
標準エラー出力 |
標準エラー出力の内容の場合:
外部コマンド起動直後メッセージの場合:メッセージとパラメタを出力します。 |
CRLF |
レコードの終端符号が出力されます。 |
(e) 出力先
外部コマンドプロセスの標準エラー出力ログの出力先を次に示します。
<J2EEサーバのログ出力ディレクトリ>/CSCADP/ADPCMD/maintenance/<サービスID>
標準エラー出力ログのログファイル名を次の表に示します。
ログファイルの出力モード |
ログファイル名 |
---|---|
ラップアラウンドモードの場合 |
cscadpcmdstderr_<HCSCサーバ名>_<面数>.log |
シフトモードの場合 |
cscadpcmdstderr_<HCSCサーバ名>_.log |
なお,ログファイルの面数はコマンドアダプタ実行環境プロパティファイル,またはコマンドアダプタ実行環境共通プロパティファイルのadpcmd.log.exptrace.filenumプロパティで,ログファイルのサイズはadpcmd.log.exptrace.filesizeプロパティで指定します。なお,これらのプロパティはコマンドアダプタ実行環境共通プロパティファイルでも指定できます。
(7) 外部コマンドプロセス起動後に例外が発生した場合の対処
外部コマンドの起動から,タイムアウト待ちの間でJavaの例外が内部で発生した場合,外部コマンドプロセスの強制終了を試みます。
強制終了に成功した場合,メッセージログに警告メッセージ(KDEC81559-W)が出力されます。
強制終了に失敗した場合,メッセージログにエラーメッセージ(KDEC81560-E)が出力されます。この場合,外部コマンドプロセスの状態については,システム運用者が確認する必要があります。
(8) スレッドの解放
コマンドアダプタでは,1リクエストに対して最大3つのスレッドを生成します。
生成するスレッドとスレッド数を次の表に示します。
スレッドの用途 |
生成スレッド数 |
|
---|---|---|
外部コマンド実行中に必要なスレッド |
2 |
|
強制終了用スレッド※1 |
プロセスタイムアウト発生時※2 |
1 |
外部コマンドプロセス起動後の例外発生時 |
1 |
条件によってはコマンドアダプタ応答後にスレッドが残留します。そのためJ2EEサーバのリソースが枯渇しないように,適切に対処する必要があります。
発生するメッセージと対処方法を次の表に示します。
発生メッセージと条件 |
残留スレッド数 |
対処方法 |
---|---|---|
KDEC81553-Eが発生, かつタイムアウト発生時の外部コマンドプロセス強制終了可否が無効のとき |
2 |
必要に応じて起動したプロセスを停止してください。 |
KDEC81561-Eが発生 |
2 |
コマンドプロセスからのサブプロセスをバックグラウンドで起動することは禁止事項です。コマンドアダプタから指定するコマンドの処理を見直してください。 バックグラウンドで実行されているサブプロセスを外部から終了させてください。 |
KDEC81557-Eが発生 |
1 |
起動したプロセスの状態を確認してください。また,必要に応じて起動したプロセスを停止してください。 |
KDEC81560-Eが発生 |
1 |
起動したプロセスの状態を確認してください。また,必要に応じて起動したプロセスを停止してください。 |
- 注意事項
-
コマンドアダプタで指定した外部コマンドプロセスから,サブプロセスをバックグラウンドで起動することは禁止事項です。サブプロセスをバックグラウンドで起動した場合,メッセージの出力の有無に関係なくスレッドが残留するおそれがあります。
(9) ファイルディスクリプタの解放
コマンドアダプタでは,1リクエストに対して最大3つのファイルディスクリプタを消費します。また,コマンドアダプタ応答後も,外部コマンドプロセスが終了しないかぎりファイルディスクリプタは解放されません。必要に応じて起動したプロセスを停止してください。
ファイルディスクリプタ数の見積もり方法については,「付録I.1 ファイルディスクリプタ数の見積もり」を参照してください。