Cosminexus アプリケーションサーバ V8 機能解説 保守/移行/互換編
JavaVMのスレッドダンプを調査すると,システムのデッドロックなどのjavaプログラムレベルでのトラブル要因の調査が容易になります。
出力される情報の種類は,J2EEサーバの起動時に指定しているオプションによって異なります。JavaVMの資料取得の設定については,「3.3.19 JavaVMの資料取得の設定」を参照してください。
JavaVMのスレッドダンプ情報の構成を次の表に示します。
| 出力情報 | 内容 |
|---|---|
| ヘッダ | 日付,JavaVMバージョン情報,起動コマンドラインを出力します。 |
| システム設定 | 次の情報を出力します。
|
| 動作環境 | 次の情報を出力します。
|
| メモリ情報(Windowsの場合) | 現在のメモリ使用量および各未使用サイズ情報を出力します。 |
| Javaヒープ情報 | Javaヒープの各世代のメモリ使用状況を出力します。 |
| JavaVM内部メモリマップ情報 | JavaVM自身の確保しているメモリの領域情報を出力します。 |
| JavaVM内部メモリサイズ情報 | JavaVM自身の確保しているメモリのサイズ情報を出力します。 |
| アプリケーション環境 | 次の情報を出力します。
|
| ライブラリ情報 | ローディングされているライブラリの情報を出力します。 |
| スレッド情報 <スレッド1> : <スレッドn> |
スレッドごとにスレッド情報を出力します。 |
| Javaモニタダンプ | Javaモニタオブジェクトの一覧を表示します。 |
| Rawモニタダンプ※1 | Java内部で使われるモニタ情報の一覧を出力します。Row monitorが使用された場合だけ出力されます。 |
| JNIグローバル参照情報※2 | JavaVMが保持しているJNIのグローバル参照の数を出力します。 |
| Explicitヒープ詳細情報 | 明示管理ヒープ機能使用時には,Javaプロセスのクラスごとに次の情報を出力します。
|
| クラス別統計情報 | jheapprofコマンドで指定したJavaプロセスのクラスごとに次の情報を出力します。
|
| フッタ | スレッドダンプが終了した時刻を表示します。 |
JavaVMのスレッドダンプ情報の詳細については,マニュアル「Cosminexus アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「-XX:[+|-]HitachiThreadDump(拡張スレッドダンプ情報出力オプション)」を参照してください。なお,クラス別統計情報については,「8.3 クラス別統計機能」を参照してください。Explicitヒープ詳細情報については,「(3) Explicitヒープ詳細情報の出力内容」を参照してください。
J2EEアプリケーションやバッチアプリケーションでスローダウンやハングアップが発生した時に,スレッドダンプと性能解析トレースを対応づけることで,問題が発生した個所を調査できます。
スレッドダンプと性能解析トレースファイルの対応づけには,スレッドダンプに出力されたスレッド情報のnativeID(OSレベルのスレッドID)と性能解析トレースファイルに出力されたスレッドIDを使用します。スレッドダンプから対応する性能解析トレースファイルを特定する手順について説明します。
: : Full thread dump completed. Fri Jul 21 19:22:47 2006 |
: : "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進数)
: : "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進数)
Explicitヒープ詳細情報には,Explicitヒープ情報およびExplicitメモリブロック情報が出力されます。Explicitメモリブロック情報は,Explicitメモリブロックが一つ以上ある場合に,その個数分出力されます。Explicitメモリブロック情報には,Explicitメモリブロック内のオブジェクト統計情報も出力されます。
Explicitヒープ詳細情報の出力形式,出力項目および出力例を次に示します。
Explicit Heap Status
--------------------
max <EH_MAX>, total <EH_TOTAL>, used <EH_USED>, garbage <EH_GARB> (<EH_PER1> used/max, <EH_PER2> \
used/total, <EH_PER3> garbage/used), <EM_NUMS> spaces exist
Explicit Memories(<EM_MGR_PTR>)
...
"<EM_NAME>" eid=<EID>(<EM_PTR>)/<EM_TYPE>, total <EM_TOTAL>, used <EM_USED>, garbage <EM_GARB> \
(<EM_PER1> used/total, <EM_PER2> garbage/used, <FL_BLOCKS> blocks) <EM_STAT>
deployed objects
________________Size__Instances__Class________________
<ISIZE> <INUM> <CNAME>
...
<AISIZE> <AINUM> total
...
|
注 出力形式で使用している記号については,「5.11.2(3) イベントログの出力形式の説明で使用する記号」を参照してください。
Explicit Heap Status -------------------- max <EH_MAX>, total <EH_TOTAL>, used <EH_USED>, garbage <EH_GARB> (<EH_PER1> used/max, <EH_PER2> \ used/total, <EH_PER3> garbage/used), <EM_NUMS> spaces exist Explicit Memories(<EM_MGR_PTR>) ... "<EM_NAME>" eid=<EID>(<EM_PTR>)/<EM_TYPE>, total <EM_TOTAL>, used <EM_USED>, garbage <EM_GARB> \ (<EM_PER1> used/total, <EM_PER2> garbage/used, <FL_BLOCKS> blocks) <EM_STAT> ... |
注 出力形式で使用している記号については,「5.11.2(3) イベントログの出力形式の説明で使用する記号」を参照してください。
表5-22 出力項目(Explicitヒープ詳細情報)
| 分類 | 出力項目 | 出力内容 | 意味 |
|---|---|---|---|
| Explicitヒープ情報 | <EH_MAX> | <const>K | Explicitヒープの最大サイズが出力されます。単位はキロバイトです。 |
| <EH_TOTAL> | <const>K | 確保済みExplicitヒープサイズが出力されます。単位はキロバイトです。 | |
| <EH_USED> | <const>K | 利用済みExplicitヒープサイズが出力されます。単位はキロバイトです。 | |
| <EH_GARB> | <const>K | Explicitヒープの内部状態が出力されます。 | |
| <EH_PER1> | <decimal>% | Explicitヒープ利用率(<EH_USED>/<EH_MAX>)が%表記で出力されます。 | |
| <EH_PER2> | <decimal>% | Explicitヒープ利用率(<EH_USED>/<EH_TOTAL>)が%表記で出力されます。 | |
| <EH_PER3> | <decimal>% | Explicitヒープの内部状態が出力されます。 | |
| <EM_NUMS> | <const> | 有効なExplicitメモリブロックの数が出力されます。 | |
| <EM_MGR_PTR> | <ptr> | Explicitヒープ制御のための内部情報があるメモリアドレスが出力されます。障害調査時などに利用します。 | |
| Explicitメモリブロック情報 | <EM_NAME> | <letters> | Explicitメモリブロックの名称が出力されます。 Explicitメモリブロックの名称に多バイト文字が含まれている場合,出力内容は不定です(通常は文字化けして出力されます)。 Explicitメモリブロックの初期化とほぼ同時に出力された場合や,JavaVMが内部で生成したExplicitメモリブロックの場合は,"NULL"が出力されることがあります。 |
| <EID> | <const> | ExplicitメモリブロックのIDが出力されます。 | |
| <EM_PTR> | <ptr> | Explicitメモリブロック内部構造があるメモリアドレスが出力されます。障害調査時などに利用します。 | |
| <EM_TYPE> | R|B|A | Explicitの種別が出力されます。Rは,アプリケーションサーバの内部で利用されているExplicitメモリブロックを示します。Bは,アプリケーションが利用しているExplicitメモリブロックを示します。Aは,自動配置設定ファイルを使って指定したExplicitメモリブロックを示します。 | |
| <EM_TOTAL> | <const>K | Explicitメモリブロックのメモリ確保済みサイズが出力されます。単位はキロバイトです。 | |
| <EM_USED> | <const>K | Explicitメモリブロックの利用済みサイズが出力されます。単位はキロバイトです。 | |
| <EM_GARB> | <const>K | Explicitメモリブロックの内部状態が出力されます。単位はキロバイトです。 | |
| <EM_PER1> | <decimal>% | Explicitメモリブロック利用率(<EM_USED>/<EM_TOTAL>)が%表記で出力されます。 | |
| <EM_PER2> | <decimal>% | Explicitメモリブロックの内部状態が出力されます。 | |
| <FL_BLOCKS> | <const> | 常に0が出力されます。 | |
| <EM_STAT> | Enable|Disable | Explicitメモリブロックのサブ状態が出力されます。 | |
| オブジェクト統計情報※ | <ISIZE> | <const> | あるクラスをインスタンス化したオブジェクトのExplicitメモリブロック内のサイズが出力されます。 |
| <INUM> | <const> | あるクラスをインスタンス化したオブジェクトのExplicitメモリブロック内の個数が出力されます。 | |
| <CNAME> | <letters> | <ISIZE>および<INUM>が示すクラスの完全クラス名が出力されます。 | |
| <AISIZE> | <const> | Explicitメモリブロック内の全オブジェクトの合計サイズが出力されます。 | |
| <AINUM> | <const> | Explicitメモリブロック内の全オブジェクトの個数が出力されます。 |
注 出力内容で使用している記号については,「5.11.2(3) イベントログの出力形式の説明で使用する記号」を参照してください。
注※ オブジェクト統計情報は,eheapprofコマンドを実行している場合に出力されます。なお,オブジェクト統計情報には,実際に作成したサイズ,個数よりも多く,int型配列を示す"[I"が出力されることがあります。この場合,"[I"は,Explicitメモリブロック内で使用されていないオブジェクトを示します。Explicitメモリブロック内で使用されていないオブジェクトは,JavaVMの内部処理でint型配列化されます。
Explicit Heap Status
--------------------
max 31415926K, total 162816K, used 150528K, garbage 10004K (0.0% used/max, 91.1% used/total, 6.6% garbage/used), 3 spaces exist
Explicit Memories(0x12345678)
"EJBMgrData" eid=1(0x02f25610)/R, total 54272K, used 50176K, garbage 0K (91.2% used/total, 0.0% garbage/used, 0 blocks)
deployed objects
________________Size__Instances__Class________________
35234568 10648 java.util.HashMap
5678900 10668 [Ljava.util.HashMap$Entry;
4456788 7436 java.util.HashMap$Entry
4321000 200 java.util.WeakHashMap
1234568 190 [Ljava.util.WeakHashMap$Entry
454400 4 java.util.WeakHashMap$Entry
51380224 29146 total
"VJBStored" eid=3(0x02f25910)/B, total 54272K, used 50176K, garbage 10004K (90.7% used/total, 19.9% garbage/used, 5 blocks)
deployed objects
________________Size__Instances__Class________________
35234568 10648 java.util.HashMap
5678900 10668 [Ljava.util.HashMap$Entry;
4456788 7436 java.util.HashMap$Entry
4321000 200 java.util.WeakHashMap
1234568 190 [Ljava.util.WeakHashMap$Entry
454400 4 java.util.WeakHashMap$Entry
51380224 29146 total
"ExplicitMemory-2" eid=2(0x02f25700)/B, total 54272K, used 50176K, garbage 0K (91.1% used/total, 0.0% garbage/used, 0 blocks)
deployed objects
________________Size__Instances__Class________________
35234568 10648 java.util.HashMap
5678900 10668 [Ljava.util.HashMap$Entry;
4456788 7436 java.util.HashMap$Entry
4321000 200 java.util.WeakHashMap
1234568 190 [Ljava.util.WeakHashMap$Entry
454400 4 java.util.WeakHashMap$Entry
51380224 29146 total
|
Explicit Heap Status -------------------- max 31415926K, total 213971K, used 205369K, garbage 1234K (1.1% used/max, 96.2% used/total, 0.0% garbage/used), 3 spaces exist Explicit Memories(0x12345678) "EJBMgrData" eid=1(0x02f25610)/R, total 154272K, used 150176K, garbage 1234K (97.0% used/total, 1.2% garbage/used, 0 blocks) Enable "VJBStored" eid=3(0x02f25910)/B, total 54272K, used 50176K, garbage 0K (90.9% used/total, 0.0% garbage/used, 2 blocks) Enable "ExplicitMemory-2" eid=2(0x02f25700)/R, total 5427K, used 5017K, garbage 0K (92.1% used/total, 0.0% garbage/used, 0 blocks) Enable |
All Rights Reserved. Copyright (C) 2008, 2011, Hitachi, Ltd.