IBM Support

[Db2] db2pd -stack で取得したスタック・トレースの確認方法 (Linux/UNIX 版)

Question & Answer


Question

資料収集ガイドに従って db2pd -stack コマンドを実行しました。必要な情報を取得できているか、確認する方法はありますか。

Answer

<資料収集ガイド>
[DB2 LUW] db2pd -stack によるスタック・トレース生成手順 (Linux/UNIX 版)
※ db2pd -stack コマンドを実行する際の注意点についても、上記文書に記載されています。

以下の手順でご確認ください。

1. DIAGPATH 配下にトラップ・ファイル (命名規則: <PID>.<EDUID>.<NODE#>.stack.txt のテキスト・ファイル) が出力されていることを確認してください。

  • db2pd -stack all を実行した場合
db2pd -edus コマンドおよび db2_ps (もしくは ps) コマンドで出力される、すべての PID および EDU ID のトラップ・ファイルが存在することを確認。
  • db2pd -stack <EDUID> を実行した場合
ファイル名が <PID>.<指定した EDUID>.<NODE#>.stack.txt のトラップ・ファイルが存在することを確認。

例)
1) インスタンス配下のプロセスの PID および EDU ID の確認。
$ db2pd -edus

List of all EDUs for database member 0

Database Member 0 -- Active -- Up 0 days 00:01:26 -- Date 2017-08-03-15.15.36.954118

List of all EDUs for database member 0

db2sysc PID: 1258
db2wdog PID: 1256
db2acd  PID: 1276

EDU ID    TID                  Kernel TID           EDU Name                               USR (s)         SYS (s)
========================================================================================================================================
21        140143138694912      1274                 db2spmlw 0                             0.000000     0.000000
20        140143142889216      1273                 db2spmrsy 0                            0.010000     0.000000
19        140143147083520      1272                 db2resync 0                            0.020000     0.000000
18        140143151277824      1271                 db2tcpcm 0                             0.000000     0.000000
17        140143155472128      1270                 db2tcpcm 0                             0.000000     0.000000
16        140143159666432      1269                 db2ipccm 0                             0.000000     0.000000
15        140143163860736      1267                 db2wlmtm 0                             0.150000     0.090000
14        140143168055040      1263                 db2wlmt 0                              0.010000     0.000000
12        140143176443648      1261                 db2thcln 0                             0.000000     0.000000
11        140143180637952      1260                 db2alarm 0                             0.020000     0.010000
1         140142920591104      1259                 db2sysc 0                              0.060000     0.020000

$ ps -eo pid,command | grep db2
 1256 db2wdog 0 [v11fp0]
 1258 db2sysc 0
 1264 db2ckpwd 0
 1265 db2ckpwd 0
 1266 db2ckpwd 0
 1268 db2vend (PD Vendor Process - 1) 0
 1276 db2acd 0 ,0,0,0,1,0,0,00000000,0,0,0,0000000000000000,0000000000000000,00000000,00000000,00000000,00000000,00000000,00000000,0000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000056eae000,0000000000000000,0000000000000000,1,0,0,,,,,a7ffd0,14,1e014,2,0,1,0000000000041fc0,0x240000000,0x240000000,1600000,289f8009,2,28ee0013
 1334 grep --color=auto db2

2) DIAGPATH の確認
$ db2 get dbm cfg | grep -i diagpath

 診断データのディレクトリー・パス             (DIAGPATH) = /home/db2inst1/sqllib/db2dump/ <-- DIAGPATH
 現行メンバーの解決済の DIAGPATH                         = /home/db2inst1/sqllib/db2dump/
 代替診断データのディレクトリー・パス (ALT_DIAGPATH)     =
 現行メンバーの解決済みの ALT_DIAGPATH                   =

3) トラップ・ファイルの確認
$ ls -1 /home/db2inst1/sqllib/db2dump/
1256.2.000.stack.txt <-- db2wdog プロセス
1258.000.processObj.txt
1258.1.000.stack.txt <-- db2sysc プロセスのスレッド
1258.11.000.stack.txt <-- db2sysc プロセスのスレッド
1258.12.000.stack.txt <-- db2sysc プロセスのスレッド
1258.13.000.stack.txt <-- db2sysc プロセスのスレッド
1258.14.000.stack.txt <-- db2sysc プロセスのスレッド
1258.15.000.stack.txt <-- db2sysc プロセスのスレッド
1258.16.000.stack.txt <-- db2sysc プロセスのスレッド
1258.17.000.stack.txt <-- db2sysc プロセスのスレッド
1258.18.000.stack.txt <-- db2sysc プロセスのスレッド
1258.19.000.stack.txt <-- db2sysc プロセスのスレッド
1258.20.000.stack.txt <-- db2sysc プロセスのスレッド
1258.21.000.stack.txt <-- db2sysc プロセスのスレッド
1264.2.000.stack.txt <-- db2ckpwd プロセス
1265.2.000.stack.txt <-- db2ckpwd プロセス
1266.2.000.stack.txt <-- db2ckpwd プロセス
1268.19150656.000.stack.txt <-- db2vend プロセス
1276.139741958432576.000.nonEDU.app_stack.txt <-- db2acd プロセス
DIAG0000
clientrecords
db2diag.log
db2eventlog.000
events
stmmlog
db2inst1.nfy

2. トラップ・ファイル内の出力を確認してください。

トラップ・ファイルの情報は XML で書かれており、 db2pd -stack コマンドを実行するたびに、一回分の情報 (<Trap> タグで囲まれた情報) が追記されます。
以下が db2pd -stack コマンドを実行した回数分出力されていることをご確認ください。
  • <Header> タグ内に db2pd -stack コマンドを実行したときのタイムスタンプ
  • <StackTrace> タグ内にスタック・トレース (関数アドレス、関数名、関数内のオフセットからなる複数の行)

※ スタック・トレースは関数名が出力されない、あるいは部分的に欠けるなど、うまく出力されない場合もあります。

例)
<?xml version="1.0" encoding="ISO-8859-1"?>
(省略)
<Trap> <--1回目の出力ここから
<Header>
DB2 build information: DB2 v11.1.0.0 s1606081100 SQL11010
timestamp: 2017-08-03-15.14.19.177622 <--1回目のタイムスタンプ

(省略)

</Header>
(省略)
<StackTrace> <--1回目のスタック・トレースここから
-----FUNC-ADDR---- ------FUNCTION + OFFSET------
0x00007F75AAAE2CE6 _Z25ossDumpStackTraceInternalmR11OSSTrapFileiP7siginfoPvmm + 0x0356
                (/home/v11fp0/sqllib/lib64/libdb2osse.so.1)
0x00007F75AAAE292B ossDumpStackTraceV98 + 0x002b
                (/home/v11fp0/sqllib/lib64/libdb2osse.so.1)
0x00007F75AAADEAD7 _ZN11OSSTrapFile6dumpExEmiP7siginfoPvm + 0x00d7
                (/home/v11fp0/sqllib/lib64/libdb2osse.so.1)
0x00007F75B203F9F7 sqlo_trce + 0x03c7
                (/home/v11fp0/sqllib/lib64/libdb2e.so.1)
0x00007F75B219B17B sqloDumpDiagInfoHandler + 0x020b
                (/home/v11fp0/sqllib/lib64/libdb2e.so.1)
0x00007F75B92E9100 address: 0x00007F75B92E9100 ; dladdress: 0x00007F75B92DA000 ; offset in lib: 0x000000000000F100 ;
                (/lib64/libpthread.so.0)
0x00007F75B92E896D __nanosleep + 0x002d
                (/lib64/libpthread.so.0)
0x00007F75AAAC80DF ossSleep + 0x004f
                (/home/v11fp0/sqllib/lib64/libdb2osse.so.1)
0x00007F75B2087B4F sqlorest + 0x00ff
                (/home/v11fp0/sqllib/lib64/libdb2e.so.1)
0x00007F75B037D0DF _Z14sqleTimedSleepmPmS_ + 0x007f
                (/home/v11fp0/sqllib/lib64/libdb2e.so.1)
0x00007F75B040EB77 _ZN14sqeWlDispTimer6RunEDUEv + 0x0077
                (/home/v11fp0/sqllib/lib64/libdb2e.so.1)
0x00007F75B3B45796 _ZN9sqzEDUObj9EDUDriverEv + 0x0116
                (/home/v11fp0/sqllib/lib64/libdb2e.so.1)
0x00007F75B2198688 sqloEDUEntry + 0x0578
                (/home/v11fp0/sqllib/lib64/libdb2e.so.1)
0x00007F75B92E1DC5 address: 0x00007F75B92E1DC5 ; dladdress: 0x00007F75B92DA000 ; offset in lib: 0x0000000000007DC5 ;
                (/lib64/libpthread.so.0)
0x00007F75A9B001CD clone + 0x006d
                (/lib64/libc.so.6)
</StackTrace> <--1回目のスタック・トレースここまで

(省略)

</Trap> <--1回目の出力ここまで
<Trap> <--2回目の出力ここから

(省略)

</Trap> <--2回目の出力ここまで
<Trap> <--3回目の出力ここから

(省略)

</Trap> <--3回目の出力ここまで
</DB2TrapFile>


関連情報
パスポート・アドバンテージによく寄せられる質問

お問合せ先
技術的な内容に関して、サービス契約のもと IBM サービス・ラインにお問い合わせください。
IBM サービス・ライン

[{"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"DB2 Tools - db2pd","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"}],"Version":"9.7;10.1;10.5;11.1","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
16 June 2018

UID

swg22004643