IBMJavaスレッドおよびモニターダンプアナライザー



Ibm Java Thread Monitor Dump Analyzer



IBM Java Thread and Monitor Dump Analyzerを使用すると、ヒューリスティック・エンジンとJavacore分析を通じて、デッドロック、ハングしている可能性のあるスレッド、およびリソースの競合を見つけることができます。

ダウンロード: https://public.dhe.ibm.com/software/websphere/appserv/support/tools/jca/jca467.jar



前書き

一部のプラットフォームでは、場合によっては、Javacoreは「Javadump」と呼ばれます。 Javacoreを作成するコードはJVMの一部です。環境変数とランタイムスイッチを使用して制御できます。 Javacoreには、実行プロセスのある時点でキャプチャされたJVMおよびJavaアプリケーションに関連する診断情報が含まれています。たとえば、情報には、オペレーティングシステム、アプリケーション環境、スレッド、ネイティブスタック、ロック、およびメモリに関する情報があります。正確なコンテンツは、実行しているプラ​​ットフォームによって異なります。デフォルトでは、JVMが予期せず終了すると、Javacoreが表示されます。特定のシグナルをJVMに送信することにより、Javacoreをトリガーすることもできます。 JavacoreまたはJavadumpはSunSolaris JVMに存在しますが、Javacoreのコンテンツの多くはIBMの付加価値製品です。つまり、IBMJVMにのみ存在します。



IBM Javaスレッドを提供し、ダンプ・アナライザーをそのままモニターします。

Javacoreファイルの場所

オペレーティング・システム



Javacoreファイル名

フォーマットの意味

WindowsとLinux

javacore.YYYYMMDD.HHMMSS.PID.txt

YYYY =年、MM =月、DD =日、SS =秒、PID =プロセスID

エクス

javacorePID.TIME.txt

PID = processID、TIME = 1970年1月1日からの秒数

前提条件

  • Java2ランタイム環境6以降

特徴

  • Javacoreの概要
  • スレッドの詳細ビュー
  • モニターの詳細ビュー
  • 絞首刑にされた容疑者のリスト
  • スレッド比較ビュー
  • スレッド比較の要約
  • モニターロック比較ビュー
  • IBMJVMのガベージコレクター統計
  • オプションビュー
  • キーボード操作
  • 外観構成のサポート
  • IBM SovJVMのkCluster構成に関する提案。

IBM Thread and Monitor Dump Analyzer forJavaを実行する方法

IBM Thread and Monitor Dump Analyzer for Javaを実行するには、Java 2 Platform Standard Editionバージョン6以降のJavaランタイム環境(JRE)を使用する必要があります。

使用法javaXmx [heapsize] jarjca .jar [パス区切り文字で区切られたjavacoreファイル] [出力HTMLファイルの分析]


Windowsシステムのパス区切り文字はセミコロンです
Unixシステムのパス区切り文字はコロンです。

例えば、

C: java bin java -Xmx200m -jar jca13.jar

=> IBM Thread and Monitor Dump Analyzer for Javaバージョン1.3を起動し、メニューからjavacoreファイルを開きます。

/ usr / java / bin / java Xmx200m jar /usr/jca/jca13.jar /usr/javacore.20060228.171037.2084.txt/usr/javacore.20060228.171048.2084.txt

=> / usr / javacore.20060228.171037.2084.txtおよび/usr/javacore.20060228.171048.2084.txtを使用して、Javaバージョン1.3 IBM Thread and Monitor DumpAnalyzerを開始します。

java Xmx500m jar jca13.jar /usr/javacore.20060228.171037.2084.txt/usr/javacore.20060228.171048.2084.txt output.html

=> / usr / javacore.20060228.171037.2084.txtおよび/usr/javacore.20060228.171048.2084.txtを使用してJavaのIBMThread and Monitor Dump Analyzerを起動し、グラフィカルユーザーインターフェイスの分析出力を呼び出さずにoutput.htmlで生成します。

Javacoreファイルの処理中にjava.lang.OutOfMemoryErrorが発生した場合は、最大ヒープサイズ(-Xmx)の値を増やして、JVMにより多くのメモリを提供してみてください。

パフォーマンスの問題により、最大ヒープサイズは、このツールで使用可能な物理メモリサイズを超えないようにする必要があります。

1. IBM Thread and Monitor Dump Analyzer forJavaを起動します

次の画面は、初期画面のスナップショットです。

2.起動プロセス中にコマンドラインでJavacoreファイルが指定されていない場合は、[ファイル]-> [スレッドダンプを開く]を選択して、Javacoreファイルを開きます。

3.複数のJavacoreファイルを選択できます

4.ロードされたJavacoreファイルがスレッドダンプリストテーブルに一覧表示されます。

スレッドダンプリストは、次の情報を提供します。

  • 名前:Javacoreのファイル名
  • 実行可能/合計スレッド:実行可能スレッドと合計スレッド
  • 使用可能/割り当て済みヒープ:使用可能で割り当て済みのJavaヒープの量
  • AF / GCカウンター:割り当ての失敗とガベージコレクターのカウンター
  • モニター:ロックされたモニターの数。モニターにデッドロックがある場合は、デッドロックが表示されます

5. Javacoreをクリックして、Javacoreの概要を表示します。

IBMJavacoreに関する以下の情報が表示されます。

  • ファイル名
  • スレッドダンプの理由
  • 日付
  • プロセスID
  • Javaバージョン
  • Javaヒープ情報
    • Javaヒープの最大サイズ
    • 初期Javaヒープサイズ
    • ガベージコレクションカウンター
    • 割り当て失敗カウンター
    • 無料のJavaヒープサイズ
    • 割り当てられたJavaヒープサイズ
  • 現在のスレッド名
  • Javaヒープにロードされたクラスの数
  • 推奨されるkClusterサイズ(IBM SDK1.4.2および1.3.1SR7以降の場合のみ)
  • Javaコマンドライン

IBM以外のJavacore(またはスレッドダンプ)は、限られた情報しか提供しません。

6.マウスの右ボタンをクリックして、メニューをポップアップします。または、[分析]メニューをクリックして、サブメニューを表示します。

7.以下は、Javacoreの「スレッド詳細ビュー」です。

スレッドはスレッド名でソートされます。スレッドの詳細ビューには、次の情報が表示されます。

  • スレッド名:スレッド名
  • スレッドの状態:スレッドの状態(実行可能、待機中、一時停止など)。
  • メソッド名:IDLE、LISTEN、KEEP-ALIVEなど、最後に呼び出されたメソッドまたは事前定義された状態またはスタックトレースモード
  • Javaスタックトレース:スレッドを選択すると、Javaスタックトレースが表示されます。
  • ネイティブスタックトレース:ネイティブスタックトレースは、Javaスタックトレースの下に表示されます(使用可能な場合)。

注意:

  • アイドルスレッドは、作業を受け取る準備ができているが、接続を確立していないスレッドです。
  • KEEP-ALIVEスレッドは、作業を受け取り、いつでも接続を確立できるアイドルスレッドです。
  • LISTENスレッドはポートでリッスンします

8.スレッドがモニターを所有している場合、スレッド名は特別なアイコンでマークされ、モニターがロックされるのを待機しているスレッドを示します。

次の例では、スレッド「Platopriority9」にモニター所有権アイコンがあります。待機中のスレッドのリストに、アリストテレスとソクラテスのスレッドが表示されます。

スレッドがモニターロックを待機している場合、スレッド名は特別なアイコンでマークされ、モニターロックを所有しているスレッドを示します。

以下の例では、スレッドAristotle priority5は、名前列のモニターロックアイコンを待機しています。

「ブロッカー」リストには、モニターを所有しているプラ​​トン優先度9が表示されます。

9.テーブルヘッダーをクリックすると、任意の列を並べ替えることができます。以下は、スレッドステータスでソートされた「スレッド詳細ビュー」です。

10.以下は、メソッド別に分類された「スレッド詳細ビュー」です。

11.デフォルトでは、以下に示すように、デッドロックスレッドは灰色で表示されます。

12. Ctrlキーを押しながら複数のJavacoreを選択し、マウスの右ボタンをクリックして、[スレッドの比較]を選択します。

または、[分析]-> [スレッドの比較]を選択して、[スレッドの比較]ビューを表示します

13.以下は、Javacoreの2つのCompreThreadsビューです。


要約が右側のペインに表示されます。スレッド名とメソッド名は、テーブルの各Javacoreに表示されます。

  • プロセスID
  • 最初のダンプ:最初のJavacoreのタイムスタンプ
  • Last Dump:最後のJavacoreのタイムスタンプ
  • 1分あたりのガベージコレクション:1分あたりのガベージコレクション
  • 1分あたりの割り当て失敗数:1分あたりの割り当て失敗数
  • 経過時間:最初のJavacoreと最後のJavacoreの間の時間
  • 絞首刑にされた容疑者の数
  • 絞首刑にされた容疑者のリスト

赤い背景は、スレッドがハングしている可能性があることを示しています。緑の境界線は、スレッドを実行できることを示します。青い境界線は、モニターが待機していることを示します。黄色の境界線は待機状態を示します。

14.スレッドを選択すると、スレッドの概要が表示されます。

15. [モニターの詳細]を選択して、[モニターの詳細]ビューを表示します

16.モニターロック情報はツリー形式で表示されます

合計サイズは、特定のモニターに直接または間接的に関連するスレッドの総数です。

サイズは、特定のモニターに直接関連するスレッドの数です。

スレッドの1つをクリックします。

サーブレットエンジントランスポートによってロックされたモニターを待機しているスレッドは47個あります:3049

デッドロックスレッドはアイコンで表示され、 次のように:

17.任意のスレッドをクリックして、モニターおよびスレッド情報に関する詳細情報を表示できます。

18.モニターの比較ビューでモニターを比較することもできます。モニター比較メニューを選択します

19.赤い線は、「比較モニター」ビューの特定のスレッドがハングする可能性があることを示しています。

スレッドをクリックすると、スレッドによって保持されているロックを待機しているスレッドのリストが中央のペインに表示されます。中央のペインでスレッドをクリックすると、スレッド情報が右側のペインに表示されます。

20.「表示」->「オプション」を選択して、IBM Thread and Monitor Dump Analyzer forJavaを構成します。

21.デフォルトのディレクトリ、色、その他のオプションを変更できます。

22-1。色の状態を選択し、変更ボタンをクリックして色を変更します。

22-2。色を選択して[OK]をクリックします

23.オプションの[詳細設定]ペインで、スタックトレースパターン認識エンジンをカスタマイズできます。

IDリスト:カスタムスタックトレースモードのIDリスト

ID:スタックトレースモードの識別子。スペースは使用できません。

スタック名:スレッドの詳細ビューから見たスタックトレースモードの名前

スタックトレース:スタックトレースモード。構文:「atpackage.class.method」。括弧は使用できません。

説明:スタックトレースモードの説明

一致するものが見つかった場合、ツールはスタックトレースパターンを検索し、スレッドの詳細ビューにスタック名を表示します

警告:スレッドダンプがロードされている場合は、新しいスタックトレースモードを追加して、スレッドダンプを再度開いてください。

24. [コンソールのクリア]メニューを選択すると、コンソールのメッセージを削除できます

25.「スレッドダンプをオフにする」を選択して、Javacoreファイルをアンロードします。

26.ヘルプメニューにヘルプ画面が表示されます。

27.「ヘルプ」->「バージョン情報」を選択して、IBM Thread and Monitor Dump Analyzer forJavaのバージョン情報を表示します。