分散トランザクション処理機能 OpenTP1 解説
ここでは,OpenTP1システムで障害の原因を解析するための機能について説明します。
なお,次に示す機能は,TP1/Extension 1をインストールしていることが前提です。TP1/Extension 1をインストールしていない場合の動作は保証できません。
MCFのプロセスごとに,発生したイベントや送受信データの情報を取得しています。これをMCFトレースといいます。MCFトレース情報は,共用メモリ中のトレース領域(トレースバッファ)に取得されます。MCF通信構成定義でMCFトレースのディスク出力機能を使うことを指定しておくと,トレース領域に空きがなくなった場合に,ディスク上のMCFトレースファイルに出力されます。MCFトレースのディスク出力機能を使用しない場合で,一時的にMCFトレース情報が必要になったときは,MCFトレース取得開始コマンド(mcftstrtr),およびMCFトレース取得終了コマンド(mcftstptr)を使用すると,MCFトレース情報をMCFトレースファイルに出力できます。コマンドの詳細については,マニュアル「OpenTP1 運用と操作」を参照してください。
MCFトレースは,障害発生までのプロセス内での制御関数と各イベントの制御の流れを解析するために利用します。
OpenTP1のUAP(SUP,SPP,MHP)が異常終了すると,UAPから呼び出したAPIのトレース情報が出力されます。この機能をUAPトレースといい,取得した情報をUAPトレース情報といいます。OpenTP1では,UAPプロセス単位にUAPトレース情報を取得しています。
UAPトレース情報は,$DCDIR/spool/save/ディレクトリの下に,ファイル名"サーバ名n.uat"(nはUAPプロセスの退避コアファイルに付けられる通番を示します)で取得されます。このファイルを,UAPトレース編集出力ファイルといいます。
任意の退避コアファイルを基にUAPトレース情報を出力する場合は,UAPが異常終了したときに生成した退避コアファイルをuatdumpコマンドに指定して実行します。uatdumpコマンドの出力先をリダイレクトすると,任意のファイルにUAPトレース情報を取得できます。
UAPトレース情報を格納する件数の最大数は,ユーザサービス定義のuap_trace_maxオペランドに指定します。ここに指定した値を超えた場合は,ラップアラウンドして取得します。
UAPトレース情報は,異常終了したUAPのプロセス単位に取得されます。RPCでノードをわたるトランザクション処理が異常終了した場合は,UAPトレース情報はノードで実行したUAPプロセスごとに取得されます。
UAPトレースについては,マニュアル「OpenTP1 テスタ・UAPトレース使用の手引」のUAPトレースの説明を参照してください。
RPCのサービス要求情報をファイルにトレースとして取得できます。これをRPCトレースといいます。RPCトレースは,RPC管理コマンドでダンプ出力できます。RPCトレースは,次の目的に利用できます。
RPCトレースファイルを編集出力する場合は,rpcdumpコマンドを実行します。
RPCトレースファイルは,システムサービスごとに取得できます。該当するシステムサービスの定義に,RPCトレースファイルを取得する指定をします。これらのRPCトレースファイルは,マージして時系列に出力できます。この場合は,rpcmrgコマンドを実行します。
OpenTP1で動作する各種サービスの主なイベントでOpenTP1識別子などのトレース情報を取得しています。これを性能検証用トレースといいます。
性能検証用トレースには次の特長があります。
性能検証用トレースに関係するシステム定義は,次の表に示すとおりです。
表5-5 性能検証用トレースに関係するシステム定義
定義名 | 形式 | オペランド | 定義内容 |
---|---|---|---|
システム共通定義 | set | prf_trace | 性能検証用トレース情報を取得するかどうかを指定 |
set | trn_prf_trace_level | トレースの取得レベル | |
性能検証用トレース定義 | set | prf_file_size | トレースファイルのサイズ |
それぞれの定義の詳細については,マニュアル「OpenTP1 システム定義」を参照してください。
なお,性能検証用トレースはprfgetコマンドによってバイナリ形式で取り出したあと,prfedコマンド,またはdcalzprfコマンドによってキャラクタ形式で出力できます。
また,ユーザ固有のトレース情報をdc_prf_utrace_put関数によってトレースファイルに取得したり,直前に取得したトレースのプロセス内取得通番をdc_prf_get_trace_num関数によって取得したりできます。
XAリソースサービスを使用したトランザクション連携の各種イベント(アプリケーションサーバからのトランザクション要求,OpenTP1のトランザクション処理)のトレース情報を取得しています。これをXAR性能検証用トレースといいます。
XAR性能検証用トレースは,$DCDIR/spool/dcxarinfディレクトリの下に,"_xr_001","_xr_002","_xr_003"…というファイル名で取得されます。これらのファイルをXAR性能検証用トレース情報ファイルといいます。XAR性能検証用トレース情報ファイルの出力先およびファイル名は変更できませんが,取得サイズおよび取得ファイル数は変更できます。詳細については,マニュアル「OpenTP1 システム定義」のXAR性能検証用トレース定義の説明を参照してください。
XAR性能検証用トレースを取得するには,次の手順で定義を設定します。
次の表にxar_prf_trace_levelオペランドの指定値とXAR性能検証用トレースの取得情報の関係を示します。
表5-6 xar_prf_trace_levelオペランドの指定値とXAR性能検証用トレースの取得情報の関係
xar_prf_trace_levelオペランドの指定値 | XAR性能検証用トレースの取得情報 | イベントID | トレースデータ長(単位:バイト) | 取得タイミング | |
---|---|---|---|---|---|
00000001 | アプリケーションサーバからのトランザクション要求 | 0x4a00 | 128 | トランザクションブランチの開始要求 | 呼び出し直後 |
0x4a01 | 128 | リターン直前 | |||
0x4a02 | 128 | トランザクションブランチ内からのRPC実行要求 | 呼び出し直後 | ||
0x4a03 | 128 | リターン直前 | |||
0x4a04 | 128 | トランザクションブランチの終了要求 | 呼び出し直後 | ||
0x4a05 | 128 | リターン直前 | |||
0x4a06 | 128 | トランザクションブランチのコミット準備要求 | 呼び出し直後 | ||
0x4a07 | 128 | リターン直前 | |||
0x4a08 | 128 | トランザクションブランチのコミット要求 | 呼び出し直後 | ||
0x4a09 | 128 | リターン直前 | |||
0x4a0a | 128 | トランザクションブランチのロールバック要求 | 呼び出し直後 | ||
0x4a0b | 128 | リターン直前 | |||
0x4a0c | 64 | Prepared状態,Heuristically Completed状態のトランザクションブランチ通知要求 | 呼び出し直後 | ||
0x4a0d | 64 | リターン直前 | |||
0x4a0e | 128 | Heuristically Completed状態のトランザクションブランチ破棄要求 | 呼び出し直後 | ||
0x4a0f | 128 | リターン直前 | |||
00000002 | OpenTP1のトランザクション処理 | 0x4b00 | 64 | トランザクションブランチ開始 | 直前 |
0x4b01 | 64 | 直後 | |||
0x4b02 | 64 | トランザクションブランチ内からのRPC実行 | 直前 | ||
0x4b03 | 64 | 直後 | |||
0x4b04 | 64 | トランザクションブランチの終了 | 直前 | ||
0x4b05 | 64 | 直後 | |||
0x4b06 | 64 | トランザクションブランチのコミット準備 | 直前 | ||
0x4b07 | 64 | 直後 | |||
0x4b08 | 64 | トランザクションブランチのコミット | 直前 | ||
0x4b09 | 64 | 直後 | |||
0x4b0a | 64 | トランザクションブランチのロールバック | 直前 | ||
0x4b0b | 64 | 直後 | |||
0x4b0c | 64 | Prepared,Heuristically Completed状態のトランザクションブランチの通知 | 直前 | ||
0x4b0d | 64 | 直後 | |||
0x4b0e | 64 | Heuristically Completed状態のトランザクションブランチの破棄 | 直前 | ||
0x4b0f | 64 | 直後 |
xar_prf_trace_levelオペランドの詳細については,マニュアル「OpenTP1 システム定義」のXAリソースサービス定義の説明を参照してください。
XAR性能検証用トレース情報ファイルの取得,編集出力には,prfgetコマンド,prfedコマンド,またはdcalzprfコマンドを使用します。取得方法,および編集出力方法を次に示します。
$DCDIR/bin/prfget -f _xr | $DCDIR/bin/prfed -d
$DCDIR/bin/prfget -f _xr | $DCDIR/bin/dcalzprf
$DCDIR/bin/prfget -a -f _xr | $DCDIR/bin/prfed -d
$DCDIR/bin/prfget -a -f _xr | $DCDIR/bin/dcalzprf
ジャーナルサービスで実行されるジャーナルバッファリング,およびジャーナル出力の各種イベントトレース情報を取得しています。これをJNL性能検証用トレースといいます。
JNL性能検証用トレースは,$DCDIR/spool/dcjnlinf/prfinfディレクトリの下に,"_jl_001","_jl_002","_jl_003"…というファイル名で取得されます。これらのファイルをJNL性能検証用トレース情報ファイルといいます。JNL性能検証用トレース情報ファイルの出力先およびファイル名は,変更できません。
JNL性能検証用トレースを取得するには,次の手順で定義を設定します。
次の表にjnl_prf_event_trace_levelオペランドの指定値と取得するトレース情報の関係を示します。各イベントの取得タイミングについては,マニュアル「OpenTP1 運用と操作」の性能検証用トレース情報の取得の説明を参照してください。
表5-7 jnl_prf_event_trace_levelオペランドの指定値と取得するトレース情報の関係
jnl_prf_event_trace_levelオペランドの指定値 | トレース情報のイベントID | |
---|---|---|
0xc202,0xc203,0xc401,0xc402 | 0xc001〜0xc201,0xc204〜0xc400 | |
00000000 | × | × |
00000001 | ○ | × |
00000002 | ○ | ○ |
その他 | ○ | ○ |
JNL性能検証用トレース情報ファイルの取得,編集出力には,prfgetコマンド,prfedコマンド,またはdcalzprfコマンドを使用します。取得方法を次に示します。
$DCDIR/bin/prfget -f _jl | $DCDIR/bin/prfed -d
$DCDIR/bin/prfget -f _jl | $DCDIR/bin/dcalzprf
$DCDIR/bin/prfget -a -f _jl | $DCDIR/bin/prfed -d
$DCDIR/bin/prfget -a -f _jl | $DCDIR/bin/dcalzprf
トランザクション処理に伴う各種排他制御のトレース情報を取得しています。これをLCK性能検証用トレースといいます。
LCK性能検証用トレースは,$DCDIR/spool/dclckinf/prfディレクトリの下に,"_lk_001","_lk_002","_lk_003"…というファイル名で取得されます。これらのファイルをLCK性能検証用トレース情報ファイルといいます。LCK性能検証用トレース情報ファイルの出力先およびファイル名は変更できませんが,取得サイズおよび取得ファイル数は変更できます。詳細については,マニュアル「OpenTP1 システム定義」のLCK性能検証用トレース定義の説明を参照してください。
LCK性能検証用トレースを取得するには,次の手順で定義を設定します。
次の表にlck_prf_trace_levelオペランドの指定値とLCK性能検証用トレースの取得情報の関係を示します。
表5-8 lck_prf_trace_levelオペランドの指定値とLCK性能検証用トレースの取得情報の関係
lck_prf_trace_levelオペランドの指定値 | LCK性能検証用トレースの取得情報 | イベントID | トレースデータ長(単位:バイト) | 取得タイミング | |
---|---|---|---|---|---|
00000000 | 排他制御についてのトレースを取得しない | − | − | − | |
00000001 | 排他制御についてのトレースを取得する | 0x6400 | 128 | 資源の排他 | 呼び出し直後 |
0x6401 | 128 | リターン直前 | |||
0x6410 | 128 | 排他待ち合せ | 開始直前 | ||
0x6411 | 128 | 終了直後 | |||
0x6420 | 128 | 全資源の排他の解除 | 呼び出し直後 | ||
0x6421 | 128 | リターン直前 | |||
0x6430 | 128 | 資源名称を指定した排他の解除 | 呼び出し直後 | ||
0x6431 | 128 | リターン直前 |
lck_prf_trace_levelオペランドの詳細については,マニュアル「OpenTP1 システム定義」のロックサービス定義の説明を参照してください。
LCK性能検証用トレース情報ファイルの取得,編集出力には,prfgetコマンド,prfedコマンド,またはdcalzprfコマンドを使用します。取得方法,および編集出力方法を次に示します。
$DCDIR/bin/prfget -f _lk | $DCDIR/bin/prfed -d
$DCDIR/bin/prfget -f _lk | $DCDIR/bin/dcalzprf
$DCDIR/bin/prfget -a -f _lk | $DCDIR/bin/prfed -d
$DCDIR/bin/prfget -a -f _lk | $DCDIR/bin/dcalzprf
TP1/Message Controlを使用したメッセージ送受信での主なイベントで,MCF識別子などのトレース情報を取得しています。これをMCF性能検証用トレースといいます。
MCF性能検証用トレースには次の特長があります。
MCF性能検証用トレースに関係するシステム定義は,次の表に示すとおりです。
表5-9 MCF性能検証用トレースに関係するシステム定義
定義名 | 形式 | オペランド | 定義内容 |
---|---|---|---|
ユーザサービス定義 | set | mcf_prf_trace | ユーザサーバごとに,MCF性能検証用トレース情報を取得するかどうかを指定 |
MCF性能検証用トレース定義 | set | prf_file_size | MCF性能検証用トレース情報のトレースファイルサイズ |
set | prf_file_count | MCF性能検証用トレース情報のトレースファイル世代数 | |
システムサービス情報定義 | set | mcf_prf_trace | MCF通信サービスごとにMCF性能検証用トレース情報を取得するかどうかを指定 |
システムサービス共通情報定義 | set | mcf_prf_trace_level | MCF性能検証用トレース情報の取得レベル |
それぞれの定義の詳細については,マニュアル「OpenTP1 システム定義」を参照してください。
なお,MCF性能検証用トレースはprfgetコマンドによってバイナリ形式で取り出したあと,prfedコマンド,またはdcalzprfコマンドによってキャラクタ形式で出力できます。
XAリソースサービスを使用したアプリケーションサーバからのトランザクション要求種別を,イベントトレース情報として取得します。この機能をXARイベントトレースといい,取得した情報をXARイベントトレース情報といいます。
アプリケーションサーバからのトランザクション要求種別,要求コードおよび要求コードの意味を次の表に示します。
表5-10 トランザクション要求種別と要求コードの一覧
要求種別※ | 要求コード | 要求コードの意味 |
---|---|---|
Start() | xar_start | トランザクションブランチの開始処理 |
Call() | xar_call | トランザクションブランチ内からのRPCの実行 |
End() | xar_end | トランザクションブランチの終了処理 |
Prepare() | xar_prepare | トランザクションブランチのコミット準備処理(2相コミットの1相目) |
Commit() | xar_commit | トランザクションブランチのコミット処理(2相コミットの2相目) |
Rollback() | xar_rollback | トランザクションブランチのロールバック処理 |
Recover() | xar_recover | Prepared状態,Heuristically Completed状態のトランザクションブランチを通知 |
Forget() | xar_forget | Heuristically Completed状態のトランザクションブランチを破棄 |
XARイベントトレース情報は,$DCDIR/spool/dcxarinf/trace/ディレクトリの下に,ファイル名"xarevtr1"および"xarevtr2"で取得されます。これらのファイルを,XARイベントトレース情報ファイルといいます。XARイベントトレース情報ファイルの出力先およびファイル名は,変更できません。
XAリソースサービス開始時に,XARイベントトレース情報ファイルがすでに存在する場合は,バックアップファイルが作成され,新規に出力ファイルが作成されます。例えば,xarevtr1というXARイベントトレース情報ファイルが存在した場合,XAリソースサービス開始時に,xarevtr1をxarevtr1.bk1というファイルにリネームします。xarevtr1という名前のファイルは,リネームされて存在しなくなるため,新規にxarevtr1というXARイベントトレース情報ファイルが作成されます。
バックアップファイルは3世代まで保存されます。バックアップファイルが作成されるのは,XAリソースサービス開始時に,XARイベントトレース情報ファイルがすでに存在する場合だけです。オンライン中に,1ファイルへの書き込みレコード数が,XARイベントトレース情報ファイルの最大出力レコード数(XAリソースサービス定義のxar_eventtrace_recordオペランドで指定)を超えた場合には,バックアップファイルは作成されません。オンライン中に,1ファイルへの書き込みレコード数が,XARイベントトレース情報ファイルの最大出力レコード数を超えると,出力先ファイルを切り替え,XARイベントトレース情報ファイルを順次上書きしていきます。オンライン中はXARイベントトレース情報ファイルを削除しないでください。
XARイベントトレース情報の出力レベルは,XAリソースサービス定義のxar_eventtrace_levelオペランドで指定できます。デフォルトは,エラーが発生した場合だけXARイベントトレースを取得する出力レベルに指定されています。すべてのXARイベントトレース情報を取得することもできますが,その場合オンライン性能に影響を与えるため,デバッグ時以外は,デフォルトの出力レベルで運用することをお勧めします。
出力ファイルに取得されたXARイベントトレース情報は,xarevtrコマンドによって編集,表示できます。
XARイベントトレース情報の出力レベルおよび出力レコード数の指定方法についてはマニュアル「OpenTP1 システム定義」を,編集・表示方法についてはマニュアル「OpenTP1 運用と操作」を参照してください。
トランザクションブランチで発行されるXA関数や,トランザクションサービス(トランザクション管理サービス,トランザクション回復サービス,リソースマネジャ監視サービス)の各種イベントのトレース情報を取得しています。これをTRNイベントトレースといいます。
TRNイベントトレースは,$DCDIR/spool/dctrninf/trace/prf/ディレクトリの下に,"_tr_001","_tr_002","_tr_003"…というファイル名で取得されます。これらのファイルを,TRNイベントトレース情報ファイルといいます。TRNイベントトレース情報ファイルの出力先およびファイル名は,変更できません。
TRNイベントトレース情報ファイルは,取得サイズおよび取得ファイル数を変更できます。詳細については,マニュアル「OpenTP1 システム定義」のTRNイベントトレース定義を参照してください。
TRNイベントトレースを取得するには,次の手順で定義を設定します。
次の表にtrn_prf_event_trace_conditionオペランドの指定値とTRNイベントトレースの取得情報の関係を示します。
表5-11 trn_prf_event_trace_conditionオペランドの指定値とTRNイベントトレースの取得情報の関係
trn_prf_event_trace_conditionオペランドの指定値 | TRNイベントトレースの取得情報 | イベントID | トレースデータ長(単位:バイト) | 取得タイミング |
---|---|---|---|---|
xafunc | XA関数に関するトレース | 0x4500 | 320(xa_open関数,xa_close関数の場合は192) | トランザクション処理中※ |
trnservice | トランザクションサービスの動作状況に関するトレース | 0x4501 | 192 | トランザクションサービスの起動,停止または回復処理時 |
このオペランドの詳細については,マニュアル「OpenTP1 システム定義」のシステムサービス定義を参照してください。
TRNイベントトレース情報ファイルの取得,編集出力には,prfget,prfed,またはdcalzprfコマンドを使用します。取得方法,および編集出力方法を次に示します。
$DCDIR/bin/prfget -f _tr | $DCDIR/bin/prfed -d
$DCDIR/bin/prfget -f _tr | $DCDIR/bin/dcalzprf
$DCDIR/bin/prfget -a -f _tr | $DCDIR/bin/prfed -d
$DCDIR/bin/prfget -a -f _tr | $DCDIR/bin/dcalzprf
PRF: Rec Node: trn1 Run-ID: 0x4046b806 Process: 26264 Trace: 10 Event: 0x4500 Time: 2004/01/01 12:34:56 678.123.000 Server-name: Sup Rc: 0 Client: **** - ********** Server: **** Root: trn1 - ******** Svc-Grp: *************************** Svc: **************************** Trn: 78d0trn100000001trn1trn100000001 xa_commit (IN) OpenTP1_TAM axid:010000000000000c00000010 3738643074726e330000000174726e3374726e330000000100000000 Internal code1:0x2007 Internal code2: 0 Internal code3:0
ネームサービスで実行される通信処理,キャッシュへのサービス情報の登録,削除などの各種イベントのトレース情報を取得しています。これをNAMイベントトレースといいます。
NAMイベントトレースは,$DCDIR/spool/dcnaminf/ディレクトリの下に,"_nm_001","_nm_002","_nm_003"…というファイル名で取得されます。これらのファイルを,NAMイベントトレース情報ファイルといいます。NAMイベントトレース情報ファイルの出力先およびファイル名は,変更できません。
NAMイベントトレースを取得するには,次の手順で定義を設定します。
次の表にnam_prf_trace_levelオペランドの指定値と取得するトレース情報の関係を示します。各イベントの取得タイミングについては,マニュアル「OpenTP1 運用と操作」の性能検証用トレース情報の取得の説明を参照してください。
表5-12 nam_prf_trace_levelオペランドの指定値と取得するトレース情報の関係
nam_prf_trace_levelオペランドの指定値 | トレース情報のイベントID | ||
---|---|---|---|
0xf000〜0xf035 | 0xf100〜0xf114 | 0xf200〜0xf220 | |
00000000 | × | × | × |
00000001 | × | ○ | × |
00000002 | ○ | × | × |
00000003 | ○ | ○ | × |
00000004 | × | × | ○ |
00000005 | × | ○ | ○ |
00000006 | ○ | × | ○ |
00000007 | ○ | ○ | ○ |
その他 | ○ | ○ | × |
NAMイベントトレース情報ファイルの取得,編集出力には,prfget,prfedコマンド,またはdcalzprfコマンドを使用します。取得方法を次に示します。
$DCDIR/bin/prfget -a -f _nm | $DCDIR/bin/prfed -d
$DCDIR/bin/prfget -a -f _nm | $DCDIR/bin/dcalzprf
プロセスの生成,消滅,起動,完了などのプロセスイベント情報を取得します。これをプロセスサービスのイベントトレースといいます。
プロセスサービスのイベントトレースは,$DCDIR/spool/dcprcinf/ディレクトリの下に,"_pr_001","_pr_002","_pr_003"…というファイル名で取得されます。これらのファイルを,プロセスサービスイベントトレース情報ファイルといいます。プロセスサービスイベントトレース情報ファイルの出力先およびファイル名は,変更できません。
プロセスサービスのイベントトレースを取得するには,プロセスサービス定義のprc_prf_traceオペランドにYを指定します。
各イベントの取得タイミングについては,マニュアル「OpenTP1 運用と操作」の性能検証用トレース情報の取得の説明を参照してください。
プロセスサービスイベントトレース情報ファイルの取得,編集出力には,prfget,prfed,またはdcalzprfコマンドを使用します。取得方法を次に示します。
$DCDIR/bin/prfget -a -f _pr | $DCDIR/bin/prfed -d
$DCDIR/bin/prfget -a -f _pr | $DCDIR/bin/dcalzprf
OpenTP1制御下のプロセスから内部的に発行されるOpenTP1ファイルへのアクセス要求に対して,処理完了までに,システム共通定義のfil_prf_trace_delay_timeオペランドの指定値以上の処理時間が掛かった場合,イベント情報を取得します。これをFILイベントトレースといいます。
FILイベントトレースを分析することで,OpenTP1ファイルアクセスに関する処理の遅延状況を確認できます。
FILイベントトレースは,$DCDIR/spool/dcfilinf/ディレクトリの下に,"_fl_001","_fl_002","_fl_003"というファイル名で取得されます。これらのファイルをFILイベントトレース情報ファイルといいます。FILイベントトレース情報ファイルの出力先およびファイル名は,変更できません。
FILイベントトレース情報ファイルの取得,編集出力には,prfgetコマンド,prfedコマンド,またはdcalzprfコマンドを使用します。取得方法を次に示します。
$DCDIR/bin/prfget -a -f _fl | $DCDIR/bin/prfed -d
$DCDIR/bin/prfget -a -f _fl | $DCDIR/bin/dcalzprf
OpenTP1の運用コマンドを実行した場合に,コマンド実行時刻や終了時刻などの情報を$DCDIR/spool/cmdlogのcmdlog1,およびcmdlog2に出力します。
cmdlog1,およびcmdlog2は,viエディタなどで参照できます。コマンドログにはコマンドの開始,終了時刻が出力されるので,コマンドの実行に必要な時間(レスポンスタイム)の測定などができます。
All Rights Reserved. Copyright (C) 2006, 2012, Hitachi, Ltd.