Cosminexus システム運用ガイド

[目次][用語][索引][前へ][次へ]

5.5.5 JavaVMのスレッドダンプの調査

JavaVMのスレッドダンプを調査すると,システムのデッドロックなどのjavaプログラムレベルでのトラブル要因の調査が容易になります。

出力される情報の種類は,J2EEサーバの起動時に指定しているオプションによって異なります。JavaVMの資料取得の設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。

スレッドダンプ情報の構成を,次に示します。

表5-68 スレッドダンプ情報の構成

出力情報 内容
ヘッダ 日付,JavaVMバージョン情報,起動コマンドラインを出力します。
システム設定 次の情報を出力します。
  • JDKの実行環境のインストール場所を表すJavaホームパス
  • JDKを構成するライブラリのインストールディレクトリを表すJava DLLパス
  • システムクラスパス
  • Javaコマンドオプション
動作環境 次の情報を出力します。
  • ホスト名
  • OSバージョン
  • CPU情報
  • リソース情報(UNIXの場合)
メモリ情報(Windowsの場合) 現在のメモリ使用量および各未使用サイズ情報を出力します。
Javaヒープ情報 Javaヒープの各世代のメモリ使用状況を出力します。
JavaVM内部メモリマップ情報 JavaVM自身の確保しているメモリの領域情報を出力します。
JavaVM内部メモリサイズ情報 JavaVM自身の確保しているメモリのサイズ情報を出力します。
アプリケーション環境 次の情報を出力します。
  • シグナルハンドラ
  • 環境変数
ライブラリ情報 ローディングされているライブラリの情報を出力します。
スレッド情報
<スレッド1>
:
<スレッドn>
スレッドごとにスレッド情報を出力します。
Javaモニタダンプ Javaモニタオブジェクトの一覧を表示します。
Rawモニタダンプ Java内部で使われるモニタ情報の一覧を出力します。Row monitorが使用された場合だけ出力されます。
フッタ スレッドダンプが終了した時刻を表示します。

それぞれの出力内容の詳細については,マニュアル「Cosminexus リファレンス 定義編」を参照してください。

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

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

  1. スレッドダンプ,および性能解析トレースファイルを収集します。
    スレッドダンプの収集方法については,「5.4.5 JavaVMのスレッドダンプの取得」を参照してください。性能解析トレースファイルの収集方法については,「3.2.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進数)を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進数)


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

    [図データ]