Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 保守/移行編


5.5.2 スレッドダンプと性能解析トレースファイルとの対応

J2EEアプリケーションやバッチアプリケーションでスローダウンやハングアップが発生した時に,スレッドダンプと性能解析トレースを対応づけることで,問題が発生した個所を調査できます。

スレッドダンプと性能解析トレースファイルの対応づけには,スレッドダンプに出力されたスレッド情報のnativeID(OSレベルのスレッドID)と性能解析トレースファイルに出力されたスレッドIDを使用します。スレッドダンプから対応する性能解析トレースファイルを特定する手順について説明します。

  1. スレッドダンプ,および性能解析トレースファイルを収集します。

    スレッドダンプの収集方法については,「4.7 JavaVMのスレッドダンプ」を参照してください。性能解析トレースファイルの収集方法については,「7.3.1 性能解析トレースファイルの収集方法」を参照してください。

  2. 使用するスレッドダンプ,および性能解析トレースファイルを選びます。

    スレッドダンプと性能解析トレースファイルが出力された時刻を基に,調査に使用するスレッドダンプ,および性能解析トレースファイルを選びます。出力された時刻は,次の情報を参考にしてください。

    スレッドダンプ

    ファイル名,およびファイルの末尾に出力される時刻

    ファイルの末尾に出力される時刻の例を次に示します。

     :
     :
    Full thread dump completed.   Fri Jul 21 19:22:47 2006
    性能解析トレースファイル

    「Time」および「Time(msec/usec/nsec)」

    性能解析トレースファイルの「Time」および「Time(msec/usec/nsec)」の例を次の図に示します。

    [図データ]

  3. スレッドダンプの「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進数)

  4. 性能解析トレースファイルの「Thread(hashcode)」の値(10進数)が手順3.で10進数に変換した値と一致する行を探して,トレース情報を特定します。

    • Windows,AIXの場合

      Thread(スレッドID)の値が,10進数に変換した値と一致する行を探します。

      [図データ]

    • Linuxの場合

      hashcode(ハッシュコード)の値が,10進数に変換した値と一致する行を探します。

      [図データ]