5.5.2 スレッドダンプと性能解析トレースファイルとの対応
J2EEアプリケーションやバッチアプリケーションでスローダウンやハングアップが発生した時に,スレッドダンプと性能解析トレースを対応づけることで,問題が発生した個所を調査できます。
スレッドダンプと性能解析トレースファイルの対応づけには,スレッドダンプに出力されたスレッド情報のnativeID(OSレベルのスレッドID)と性能解析トレースファイルに出力されたスレッドIDを使用します。スレッドダンプから対応する性能解析トレースファイルを特定する手順について説明します。
-
スレッドダンプ,および性能解析トレースファイルを収集します。
スレッドダンプの収集方法については,「4.7 JavaVMのスレッドダンプ」を参照してください。性能解析トレースファイルの収集方法については,「7.3.1 性能解析トレースファイルの収集方法」を参照してください。
-
使用するスレッドダンプ,および性能解析トレースファイルを選びます。
スレッドダンプと性能解析トレースファイルが出力された時刻を基に,調査に使用するスレッドダンプ,および性能解析トレースファイルを選びます。出力された時刻は,次の情報を参考にしてください。
- スレッドダンプ
-
ファイル名,およびファイルの末尾に出力される時刻
ファイルの末尾に出力される時刻の例を次に示します。
: : Full thread dump completed. Fri Jul 21 19:22:47 2006
- 性能解析トレースファイル
-
「Time」および「Time(msec/usec/nsec)」
性能解析トレースファイルの「Time」および「Time(msec/usec/nsec)」の例を次の図に示します。
-
スレッドダンプの「nid」(16進数)または「jid」(16進数)を10進数に変換します。
-
Windows,AIXの場合
スレッドダンプの「nid」(16進数)を10進数に変換します。
: : "VBJ ThreadPool Worker" daemon prio=5 jid=0x00054f93 tid=0x04cef380 nid=0x1124 in Object.wait() [0x0632f000..0x0632fd18] stack=[0x06330000..0x062f5000..0x062f1000..0x062f0000] [user cpu time=0ms, kernel cpu time=15ms] [blocked count=1, waited count=29] at java.lang.Object.wait(Native Method) : :
1124(16進数)=4388(10進数)
-
Linuxの場合
スレッドダンプの「jid」(16進数)を10進数に変換します。
: : "main" prio=1 jid=0x00006d75 tid=0x00201d70 nid=0x1e51 waiting on condition [0x00000000..0xbfe80488] stack=[0xbfe87000..0xbfc8c000..0xbfc88000..0xbfc87000] [user cpu time=1320ms, kernel cpu time=4280ms] [blocked count=5, waited count=4] : :
6d75(16進数)=28021(10進数)
-
-
性能解析トレースファイルの「Thread(hashcode)」の値(10進数)が手順3.で10進数に変換した値と一致する行を探して,トレース情報を特定します。
-
Windows,AIXの場合
Thread(スレッドID)の値が,10進数に変換した値と一致する行を探します。
-
Linuxの場合
hashcode(ハッシュコード)の値が,10進数に変換した値と一致する行を探します。
-