17 JVM診断の使用
この章の内容は次のとおりです。
JVM診断の設定
JVM診断の設定と構成を行うには、次のステップを実行します。
ノート:
JVMDロード・バランサの情報も「設定」ページに表示されます。表に、ロード・バランサのURLとステータス、および関連付けられているエンジンのリストが含まれます。
JVM診断エンジンの構成
エンジン・パラメータと詳細設定を定義することで、JVM診断エンジンを構成できます。その後で新しいアイドル・スレッド・ルールおよびシステム・コール・ルールを作成できます。既存のルールに対する操作には、ルールのインポートおよびエクスポートとルールの削除が含まれます。
JVMおよびJVMプールの構成
一連のJVMをJVMプールにグループ化することで、すべての関連JVMにおけるモニタリング情報を単一のビューで提供できます。WebLogicドメイン内のすべてのJVMプールを表示し、新規JVMプールを作成し、既存のJVMプールを編集できます。
-
「設定」メニューで「ミドルウェア管理」を選択して、「エンジンおよびエージェント」を選択します。RUEI/JVMDエンジン表の「JVM診断エンジン」行を選択して、「構成」をクリックします。
-
「JVMおよびプール」タブをクリックします。使用可能なすべてのJVMプールのリストが表示されます。プールごとに、「ポーリング有効」フラグを設定して「ポーリング間隔」を指定できます。「ポーリング有効」フラグが「はい」に設定されている場合、このプールに属するJVMは、ポーリング間隔に基づいて定期的にアクティブなリクエストにポーリングされます。
-
「プールの作成」をクリックし、新規プールを作成します。
-
「JVMプールの新規作成」ダイアログ・ボックスで、JVMプールの名前と説明を入力します。
-
「ポーリング間隔」フィールドで、モニタリング(ポーリング)が有効なときに、このプールに属するJVMのサンプリング間隔を指定します。
-
「ポーリング有効」チェック・ボックスを選択して、このプールに属するJVMをポーリングします。
-
「作成」をクリックしてJVMプール情報を保存します。
-
-
プールを削除するには、プールをハイライト表示して「削除」をクリックします。
-
JVMプールまたはJVMを選択して「詳細」をクリックし、JVMプールまたはJVMの追加の詳細を表示します。
-
「ダウンロード」をクリックしてJVM診断コンポーネントをダウンロードします。次のコンポーネントをダウンロードできます。
-
JVMDエージェント: すべてのサポートされているプラットフォームのJVM診断エージェント・バイナリが含まれています。
-
LoadHeap: ヒープ・スナップショットをリポジトリにアップロードするスクリプトが含まれています。
-
JFRのロード: JFRスナップショットをリポジトリにアップロードするスクリプトが含まれています。JMC (Java Mission Control)を使用し、JFRスナップショットをダウンロードして分析します。
-
-
JVMプールまたはJVMを選択して、「構成」をクリックします。
JVMプールについては、「JVMプールの構成」を参照してください。
JVMについては、JVMの構成を参照してください。
ヒープ分析ホストの構成
ノート:
ヒープの分析およびロード・ステップでは、ヒープ分析ホストのメモリー要件が大きくなります。ヒープ分析ホストに64ビットJVMと十分な空きメモリーがあることを確認します。
ヒープ分析ホストを構成するには、次のステップに従います。
JVM診断ページへのアクセス
「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・プール・ターゲットまたはJava仮想マシン・ターゲットをクリックします。ターゲットのホーム・ページが表示されます。
JVM診断の使用を開始するには、「Java仮想マシン・プール」メニューから該当するオプションを選択します。
また、「JVM診断」ページには、WebLogic Server、WebLogicドメイン、JBoss Serverまたはクラスタのターゲットの各ホーム・ページからアクセスすることもできます。そのためには、ターゲットをクリックし、そのホーム・ページに移動します。「ターゲット」メニューから「診断」を選択し、適切なJVM診断メニュー・オプションを選択します。
JVMプールの管理
一連のJVMをJVMプールにグループ化することで、すべての関連JVMにおけるモニタリング情報を単一のビューで提供できます。プール内のすべてのJVMのモニター、JVMプールの履歴およびリアルタイム・データの表示、スレッドおよびヒープ・スナップショットの管理、新規プールの作成、既存のJVMプールの編集が可能です。JVMおよびJVMプールはEnterprise Manager内のターゲットになります。次の操作を実行できます。
Java仮想マシン・プールのホームページの表示
Java仮想マシン・プールのホームページには、JVMプール内のすべてのJVMの概要および構成情報が表示されます。
これには、次の詳細が表示されます。
-
サマリー: ポーリングが有効かどうか、およびポーリング間隔を示します。インシデントの数と構成変更の回数も表示されます。インシデント番号をクリックすると、インシデント・マネージャ・ページにドリルダウンします
-
可用性: このリージョンには、JVMプール内のメンバーの可用性ステータスが表示されます。メンバーのリンクをクリックすると、JVMのホームページにドリルダウンします。
-
JVMアクティビティ(過去15分間): このリージョンには、プールの各JVMのアクティブなスレッドが表示されます。JVMアクティビティのグラフ(「アクティブ・スレッドの状態」、「メモリー使用量」、「CPU使用率」、「GCオーバーヘッド」および「レスポンスと負荷」)を選択することもできます。
-
概要(過去15分): このリージョンには、プールの各JVMの過去15分間のステータスが表示されます。JVMの現在のアクティビティ(CPU使用率、メモリー、データベース・レスポンス、ネットワーク・レスポンスを待機しているスレッドの平均数、同期ロックを待機しているスレッドの平均数、アイドル・スレッド、および構成変更を含む)が表示されます。その他の情報: 「ターゲット・ステータス」、「診断の結果」、「GCオーバーヘッド%」、「ホストCPU使用率」。最大使用済JVMヒープ(%)、「メジャーGC数」、「マイナーGC数」、「メジャーGC時間(ms)」、「マイナーGC時間(ms)」、「ホスト」、「OS」、「ベンダー」、「JVMバージョン」、「最小ヒープ・サイズ(MB)」、「最大ヒープ・サイズ(MB)」、「オープン・ファイル・ディスクリプタ(%)」、「スワップ領域(%)」、「ホスト・メモリー(%)」、「コンテキスト切替え(/秒)」および「OSR」。
表示されたJVMが異なるWebLogicドメインに存在する場合は、JVMが稼働しているWebLogicドメインとホストが表示されます。「JVM」リンクをクリックすると、JVMホーム・ページにドリルダウンできます。
-
上位リクエスト(過去15分間): このリージョンには、プールの各JVMの上位リクエストが表示されます。統計には、各リクエストのJVM時間、JVM CPU、スレッド割当て、件数、最大期間、各リクエストの平均期間、スループット(/分)および最小期間(ms)が含まれます。
JVM診断イベントのインシデントへの昇格
イベントは、ターゲット、ジョブ、モニタリング・テンプレートに関連して、特定の時点でEnterprise Managerによって検出された重要な事象であり、通常の動作である場合も、問題のある動作を示す場合もあります。イベントの例としては、データベース・ターゲットの停止、メトリックに基づいたパフォーマンスしきい値の違反、アプリケーション構成ファイルでの未認可の変更、ジョブ実行での失敗などがあります。
インシデントは、監視対象の問題で、即時のアクションによる解決(手動または自動)あるいは根本原因の解決が必要であることを示す、1つのイベント、または相関関係のある一連のイベントです。
デフォルトでは、JVM診断イベントはインシデントには昇格されないので、JVMプールまたはJVMホームページに表示されることはありません。イベントをインシデントに昇格するには、次のステップを実行します。
- 「設定」メニューで「インシデント」,、「インシデント・ルール」の順に選択します。
- 「ルール・セットの作成」をクリックします。「ルール・セットの作成」ページの「ターゲット」リージョンで、「すべてのターゲットのタイプ」オプションを選択します。「Java仮想マシン」を選択し、Java仮想マシン・プールのターゲット・タイプを選択します。
- 「ルール」リージョンで「作成」をクリックし、「作成するルールのタイプを選択」ウィンドウで「受信イベントおよびイベントの更新」オプションを選択して「続行」」をクリックします。「新しいルールの作成: イベントの選択」ページが表示されます。「タイプ」ドロップダウン・リストで、「JVM診断しきい値違反」を選択します。
- 次に、JVM診断しきい値違反タイプの特定のイベントを選択します。
- 「追加」をクリックします。「JVM診断しきい値違反ルール」ウィンドウが表示されます。しきい値違反イベントをトリガーするJVM診断メトリックを選択します。これらのイベントはインシデントに昇格されます。「OK」をクリックします。「次へ」をクリックしてルールを確認し、「続行」をクリックしてルールを保存します。条件に一致するすべてのイベントはインシデントに昇格され、JVM診断プールのホームページに表示されます。
JVMプールのライブ・スレッド分析ページの表示
このページには、選択したプールのすべてのJVMのリアルタイム・データが表示されます。このデータは、JVMの様々なアクティブおよびアイドル状態のスレッド分析に役立ちます。分析では、スレッド・レベルからスレッドで使用されたメソッドに、そしてメソッドに含まれているローカル変数にドリルダウンできます。
「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・プール・ターゲットをクリックします。「Java仮想マシン・プール」メニューから「ライブ・スレッド分析」オプションを選択します。
このページには次の内容が表示されます。
-
JVM: この表には、JVMのリストと各JVMの現在のステータスが表示されます。CPU使用率、メモリー、データベース・レスポンスを待機しているスレッドの数、同期ロックを待機しているスレッドの数およびその他の詳細など、JVMの現在のアクティビティが表示されます。
-
JVMスレッド: この表には選択したJVMで実行中のすべてのスレッドのリストが表示されます。各スレッドに関して、次の詳細が表示されます。
-
スレッド名: スレッド名。リンクをクリックすると、JVMスタックが表示されます。
-
リクエスト: スレッドによって処理されているアプリケーション・リクエスト。
-
OS Pid: このスレッドのオペレーティング・システムとスレッドのID。
-
現在のコール: スレッドで実行されている最下位のユーザー・メソッド。
-
ファイル名: 現在のコールのクラスとメソッドを含むファイル名。
-
行: 現在実行中のメソッドの行番号。
-
状態: スレッドの現在の状態。これには「DB待機」、「RMI待機」または「ネットワーク待機」があります。
ADPまたはDMSが構成されている場合、「リクエスト名」と「リクエスト有効期間」に値が表示されます。
スレッドがDB待機状態にある場合は、「待機中」列にスレッドが待機しているデータベースの名前が表示され、「待機時間」列にはスレッドが待機する必要のある時間が表示されます。
リンクをクリックすると、そのデータベースの診断の詳細が表示されます。詳細は、「多層間の分析の実行」を参照してください。これにより、データベースの問題を追跡して、データベース・アクティビティを行うアプリケーション・リクエストを特定できます。また、メソッドおよび行番号情報を含む完全なコール・スタックを表示することもできます。
ノート:
データベース診断の詳細を表示するには、次の点を確認してください。
-
JVM診断エージェントがリクエストを開始したJVMで実行されています。
-
モニター対象のデータベースが、JVM診断エンジンによって登録されている必要があります。
-
-
その他の列: 「アプリケーション名」、「モジュール名」、「ワーク・マネージャ」、「フレーム数」、「スタック」、「ボトルネック」、「文字の読取り」、「文字の書込み」、「ブロック数」、「ブロック時間(ms)」、「待機件数」、「待機時間(sec)」、「IOファイル名」、「OSスレッドId」、「経過時間(ms)」、「待機時間」、「保持されているロック」、「ECID」、「RID」、「ユーザー」、「セッション」、「アイドル」。
次の操作を実行できます。
-
エクスポート: スレッドを選択して「エクスポート」をクリックし、Excelファイルにスレッド詳細とスレッド・スタック情報をエクスポートします。
-
検索/フィルタ: レポートされる行の数を最小限にするには、「検索」フィールドで列名を選択し、フィルタを指定します。たとえば、「スレッド名」を選択し、jobの語を入力します。検索を実行すると、jobの語が含まれるスレッドがレポートされます。
-
アイドル・スレッドの表示: このチェック・ボックスを選択して、「JVMスレッド」表にすべてのアイドル・スレッドをリストします。
-
デタッチ: スレッドを選択して、「デタッチ」をクリックすると、表が個別のウィンドウに表示されます。
-
選択したスレッドのスナップショットの取得: スレッドを選択して、「アクション」メニューから「選択したスレッドのスナップショットの取得」を選択します。スレッド・スナップショット・ページが表示されます。スナップショット設定を構成して「スレッド・スナップショットの取得」をクリックできます。選択したスレッドの詳細を含むスナップショット・ファイルが生成されます。「Java仮想マシン・プール」メニューから「スレッド・スナップショット」を選択して追加の詳細を表示します。
-
アクティブなスレッドのスナップショットの取得: このオプションでは、すべてのアクティブなスレッドのスナップショットを取得できます。「アクション」メニューから「アクティブなスレッドのスナップショットの取得」を選択すると、「スレッド・スナップショット」ページが表示されます。スナップショット設定を構成して「スレッド・スナップショットの取得」をクリックできます。すべてのアクティブ・スレッドの詳細を含むスナップショット・ファイルが生成されます。「Java仮想マシン・プール」メニューから「スレッド・スナップショット」を選択して追加の詳細を表示します。
-
スレッド履歴の表示: スレッドを選択し、「アクション」メニューから「スレッド履歴の表示」を選択します。選択した時間間隔のスレッドの履歴データがJava Workload Explorerページに表示されます。
-
アイドルとしてマーク: スレッドを選択し、「アクション」メニューから「アイドルとしてマーク」を選択します。選択したスレッドには、アイドル・スレッド・ルールに基づいて「アイドル」のマークが表示され、モニタリング・データに収集されなくなります。JVMDにアイドル・スレッドがマークされても、OSまたはJVMスレッド管理は影響を受けません。
-
アクティブとしてマーク: アイドル・スレッドを選択して、「アクション」メニューから「アクティブとしてマーク」を選択し、ステータスを「アクティブ」に変更します。
-
システム・コールをマーク: 「JVMD構成」ページでシステム・コールとして定義されたスレッド(「JVM診断エンジンの構成」を参照)とは別に、特定のスレッドをシステム・コールとしてマークできます。これにより、JVMDでは、マークされたメソッドがユーザー・コール・メソッドとみなされなくなります。
「JVMスレッド」表からスレッドを選択します。「アクション」メニューから「システム・コールをマーク」を選択して、そのスレッドをシステム・コールとしてマークします。このようにマークされたユーザー・コールは、その後、すべてシステム・コールとして扱われます。マークされたコールを選択して「システム・コールのマークを解除」をクリックすると、その後、そのスレッドはユーザー・コールとして扱われます。
-
-
スレッド情報: このセクションには、選択したスレッドの詳細情報が表示されます。現在のコール、リクエスト、ECID、状態、待機中、待機リクエストなど、スレッドの詳細が表示されます。スレッドがDB待機状態になっている場合は、データベース・ホームページにドリルダウンするリンクをクリックします。
-
スレッド・スタック: 「スレッド・スタック」表には、選択したスレッドの次の詳細が表示されます。
-
クラス・メソッド: スタック・フレームのクラスおよびメソッド。リンクをクリックすると、メソッド・ローカルが表示されます。
-
ファイル: クラスを定義しているファイル。
-
行: メソッド内の現在の実行ポイント。メソッドがインライン化されているかネイティブの場合、行番号は使用できないことがあります。
次の操作を実行できます。
-
ローカル・オブジェクトの参照: 表からメソッドを選択して「ローカル・オブジェクトの参照」をクリックします。ポップアップ・ウィンドウが表示され、ローカル変数、オブジェクトとそのクラス、および値が表示されます。
-
エクスポート: 「エクスポート」をクリックしてファイルに選択したスレッドの詳細をエクスポートできます。ファイルの保存先ディレクトリを指定するように求められます。パスを入力し、「保存」をクリックして、ファイルを.csv形式で保存します。
-
-
自動リフレッシュ: 自動リフレッシュ期間を指定して、表示されるデータをリフレッシュできます。
自動リフレッシュ期間を指定して、表示されるデータをリフレッシュできます。
JVMプールの構成
「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・プール・ターゲットをクリックします。「Java仮想マシン・プール」メニューから「JVMプールの構成」オプションを選択します。次の操作を実行できます。
-
JVMプールの詳細を変更します。プール・プロパティを更新することで、プールのモニタリングの有効化または無効化や、ポーリング間隔の変更ができます。「保存」をクリックして変更を保存します。
-
JVMプールのしきい値を構成します。「プールのしきい値の更新」を参照してください。
JVMプールの削除
JVMプールは次の場所で削除できます。
-
「ミドルウェア」ページ: JVMプールをハイライト表示して、「削除」をクリックします。
-
JVMプールのホームページ: 「Java仮想マシン・プール」メニューで「ターゲット設定」を選択し、「ターゲットの削除」をクリックします。
警告メッセージが生成されます。削除されるターゲットの名前が表示され、プールの削除時には、プール内のすべてのJVMターゲットも表示されます。「はい」をクリックするとJVMプールが削除され、「いいえ」をクリックするとJVMプールのホーム・ページに戻ります。
JVMの管理
プール内の特定のJVMのモニター、履歴およびリアルタイム・データの表示などを行うことができます。次の操作を実行できます。
JVM診断のパフォーマンス・サマリーの表示
「パフォーマンス・サマリー」ページでは、JVMターゲットのパフォーマンス・メトリック(システム・スレッドおよびアクティブ・スレッド)を表示できます。このページには、JVMターゲットに関する一連のグラフが表示されます。JVMパフォーマンス・メトリックを表示するには、次のステップを実行します。
ノート:
「エージェント診断チャート」(RAWデータ)、「JVMおよびホストの状態」(RAWデータ)、「JVMヒープ・メモリー使用量」(RAWデータ)、および「スレッド(アクティブ)の状態」(RAWデータ)のメトリック・グループは、JAVA仮想マシン・プールから非推奨になっています。
JVMのライブ・スレッド分析ページの表示
このページには選択したJVMのリアルタイム・データが表示されます。このデータは、JVMの様々なアクティブおよびアイドル状態のスレッド分析に役立ちます。分析では、スレッド・レベルからスレッドで使用されたメソッドに、そしてメソッドに含まれているローカル変数にドリルダウンできます。このページを表示するには:
- 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。
- ページの上部にある「ライブ・スレッド分析」リンクをクリックするか、「Java仮想マシン」メニューから「ライブ・スレッド分析」 オプションを選択します。
このページには次の内容が表示されます。
-
JVM: この表には、JVMのリストと各JVMの現在のステータスが表示されます。CPU使用率、メモリー、データベース・レスポンスを待機しているスレッドの数、同期ロックを待機しているスレッドの数や、その他の詳細などのJVMの現在のアクティビティが表示されます。JVMプロセスの統計には、「CPU (%)」、「メモリー(%)」、「コンテキスト切替え(/秒)」および「オープン・ファイル・ディスクリプタ(%)」が含まれます。スレッドの統計には、「CPU」、「DB待機」、「ロック」、「ネットワーク待機」、「IO待機」、「RMI待機」および「アイドル・スレッド」が含まれます。
-
JVMスレッド: この表にはJVMで実行中のすべてのスレッドのリストが表示されます。スレッドをクリックすると、スレッドの詳細が表示されます。使用可能な列をすべて表示するには、「表示」メニューから、「列」を選択し、「すべて表示」を選択します。
スレッドの詳細は、次のとおりです:
-
スレッド名: スレッド名。リンクをクリックすると、JVMスタックが表示されます。
-
リクエスト: スレッドによって処理されているアプリケーション・リクエスト。
-
OS Pid: このスレッドのオペレーティング・システムとスレッドのID。
-
現在のコール: スレッドで実行されている最下位のユーザー・メソッド。
-
ファイル名: 現在のコールのクラスとメソッドを含むファイル名。
-
行: 現在実行中のメソッドの行番号。
-
状態: スレッドの現在の状態。これには「DB待機」、「RMI待機」または「ネットワーク待機」があります。スレッドがDB待機状態の場合は、リンクをクリックするとデータベース診断の詳細が表示されます。これにより、データベースの問題を追跡して、データベース・アクティビティを行うアプリケーション・リクエストを特定できます。また、メソッドおよび行番号情報を含む完全なコール・スタックを表示することもできます。
ノート:
データベース診断の詳細を表示するには、次の点を確認してください。
-
JVM診断エージェントがリクエストを開始したJVMで実行されています。
-
モニター対象のデータベースが、JVM診断エンジンによって登録されている必要があります。
-
スレッドがDB待機状態にある場合は、「待機中」列にスレッドが待機しているデータベースの名前が表示され、「待機時間」列にはスレッドが待機する必要のある時間が表示されます。「DB待機」列のリンクをクリックすると、そのデータベースの診断の詳細が表示されます。これは、データベースの問題を追跡して、データベース・アクティビティを行うアプリケーション・リクエストを特定するうえで役立ちます。
ノート:
データベースの診断の詳細は、次の場合に表示できます。
-
JVM診断エージェントがリクエストを開始したJVMで実行されています。
-
モニター対象のデータベースが、JVM診断エンジンによって登録されている必要があります。
実行可能な操作は次のとおりです。
-
エクスポート: スレッドを選択して「エクスポート」をクリックし、Excelファイルにスレッド詳細とスレッド・スタック情報をエクスポートします。
-
検索/フィルタ: レポートされる行の数を最小限にするには、「検索」フィールドで列名を選択し、フィルタを指定します。たとえば、「スレッド名」を選択し、jobの語を入力します。検索を実行すると、jobの語が含まれるスレッドがレポートされます。
-
アイドル・スレッドの表示: このチェック・ボックスを選択して、「JVMスレッド」表にすべてのアイドル・スレッドをリストします。
-
デタッチ: スレッドを選択して、「デタッチ」をクリックすると、表が個別のウィンドウに表示されます。
-
選択したスレッドまたはアクティブなスレッドのスナップショットの取得: リストからスレッドを選択し、「アクション」メニューから「選択したスレッドのスナップショットの取得」オプションを選択します。「スレッド・スナップショット」ページが表示され、ここでスナップショットを取得します。「アクティブなスレッドのスナップショットの取得」オプションを選択すると、このJVMで実行されているアクティブなスレッドすべてのスナップショットを取得できます。スナップショットごとに次のパラメータを指定できます。
-
ポーリング間隔: スナップショットの繰り返し間隔。
-
ポーリング継続時間: スナップショットの取得期間。
-
説明: スナップショットの説明。
-
スレッド詳細: スナップショットにスレッド詳細を含める必要があるかどうかを指定できます。
-
スレッドの変更の試行: 場合によって、スレッドに関連付けられているスタックが急変して、スナップショットの取得が困難になることがあります。このパラメータを選択すると、スレッドを一時停止してスナップショットを取得できます。
-
ネットワーク待機を含む: スナップショットにネットワーク待機のスレッドを含める必要があるかどうかを指定します。
-
すべてのスレッド: スナップショットにすべてのスレッド(アクティブおよびアイドル)を含める必要があるかどうかを指定します。
-
トレースの中断の許可: トレース・プロセスを中断できるかどうかを示します。
選択に応じて、選択したスレッドまたはアクティブなスレッドの詳細を含むスナップショット・ファイルが生成されます。「Java仮想マシン・プール」メニューから「スレッド・スナップショット」を選択して追加の詳細を表示します。
-
-
スレッド履歴の表示: スレッドを選択し、「アクション」メニューから「スレッド履歴の表示」を選択します。過去30分間のスレッドの履歴データが表示されます。
-
アイドルとしてマーク: リストからスレッドを選択し、「アクション」メニューから「アイドルとしてマーク」をクリックして、スレッドをアイドルとしてマークします。
-
アクティブとしてマーク: 「アイドル・スレッドの表示」チェック・ボックスを選択した場合、アイドル・スレッドのリストが表示されます。スレッドを選択し、「アクション」メニューから「アクティブとしてマーク」を選択して、そのスレッドをアクティブなスレッドとしてマークします。
-
システム・コールをマーク: 「JVMD構成」ページでシステム・コールとして定義されたスレッド(「JVM診断エンジンの構成」を参照)とは別に、特定のスレッドをシステム・コールとしてマークできます。「JVMスレッド」表からスレッドを選択します。「アクション」メニューから「システム・コールをマーク」を選択して、そのスレッドをシステム・コールとしてマークします。このようにマークされたユーザー・コールは、その後、すべてシステム・コールとして扱われます。マークされたコールを選択して「システム・コールのマークを解除」をクリックすると、その後、そのスレッドはユーザー・コールとして扱われます。
-
-
スレッド情報: このセクションには、選択したスレッドの詳細情報が表示されます。現在のコール、リクエスト、ECID、状態、待機中、待機リクエストなど、スレッドの詳細が表示されます。スレッドがDB待機状態になっている場合は、リンクをクリックしてデータベースのホームページにドリルダウンします。多層間の分析の実行を参照してください。
-
スレッド・スタック: 「スレッド・スタック」表には、選択したスレッドの次の詳細が表示されます。
-
クラス・メソッド: スタック・フレームのクラスおよびメソッド。リンクをクリックすると、メソッド・ローカルが表示されます。
-
ファイル: クラスを定義しているファイル。
-
行: メソッド内の現在の実行ポイント。メソッドがインライン化されているかネイティブの場合、行番号は使用できないことがあります。
メソッド・レベルから下位レベルにドリルダウンできます。次の操作を実行できます。
-
ローカル・オブジェクトの参照: 表からメソッドを選択して「ローカル・オブジェクトの参照」をクリックします。ポップアップ・ウィンドウが表示され、ローカル変数、オブジェクトとそのクラス、および値が表示されます。
-
エクスポート: 「エクスポート」をクリックしてファイルに選択したスレッドの詳細をエクスポートできます。ファイルの保存先ディレクトリを指定するように求められます。パスを入力し、「保存」をクリックして、ファイルを.csv形式で保存します。
-
システム・コールをマーク/システム・コールのマークを解除: 選択したメソッドをシステム・コールとしてマークできます。「スレッド・スタック」表からメソッドを選択し、「アクション」メニューから「システム・コールをマーク」を選択します。この方法を使用してマークされたすべてのメソッドは、その後、システム・コールとして扱われます。マークされたコールを選択して「システム・コールのマークを解除」をクリックすると、その後、そのメソッドはユーザー・コールとして扱われます。
-
-
自動リフレッシュ: 自動リフレッシュ期間を指定して、表示されるデータをリフレッシュできます。
多層間の分析の実行
JVMスレッドからデータベースまで、あらゆるJVMアクティビティをトレースできます。ライブ・スレッドおよびモニター対象の履歴データについて、多層間の相互関係を表示できます。
多層間の相互関係を構築する前に、データベースがEnterprise Managerのターゲットになっていること、そしてJVM診断に登録されていることを確認します。これで、JVM診断のページからデータベース診断のページにドリルダウンできるようになります。
ノート:
データベースがJVMDに登録されていない場合は、DB待機状態のスレッドに関してデータベースJDBCの詳細、SQL文、SQL IDおよびスキーマ名がJVMDエージェントによって収集されます。
データベースがEnterprise Managerターゲットでない場合でも、データベースをカスタム・データベースとしてJVMDに登録でき、そのデータベースに対するデータベース・アクティビティが名前に基づいて追跡されます。SQL文およびSQL IDはデータベースからリアルタイムでフェッチされますが、JVM診断のページからデータベース診断のページにドリルダウンすることはできません。
データベースを登録するには:
-
「設定」メニューで「ミドルウェア管理」を選択して、「設定」を選択します。RUEI/JVMDエンジン表の「JVM診断エンジン」行を選択して、「構成」をクリックします。
-
「データベースの登録」タブをクリックします。登録済データベースのリストが表示されます。データベース名、ホスト、モニター対象データベースのOracle SIDおよびリスナー・ポート番号が表示されます。「JVMDサポートDB」を示す列も表示されます。この列の値が「はい」の場合は、多層間の分析に進むことができます。この列の値が「使用不可」の場合は、データベースへのJDBC接続を確立できないため、多層間の分析は実行できません。
ノート:
データベースをJVMDに登録した後でも多層間の相互関係が確立されない場合は、データベースを選択して「DB URLの管理」をクリックします。「登録されたデータベースの関連付け/関連付け解除」フィールドで、データベースURLを選択して「追加」をクリックし、関連付けるデータベースのURLを指定します。登録済データベースにURLが関連付けられた後で、JVM診断エンジンは、JVMターゲットと基礎となるデータベース間の層間JVMコールのモニタリングを開始します。
ライブ・スレッドについて、多層間の相互関係を表示するには、次のステップを実行します。
-
「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「ライブ・スレッド分析」オプションを選択します。
-
「JVMスレッド」列で、DB待機状態のスレッドを選択します。
-
「スレッド情報」セクションにスレッドの詳細が表示されます。多層間の相互関係が確立されている場合は、「状態」フィールドにカーソルをかざすと、
SID=<value>"SERIALNUM=<value>
を確認できます。「DB待機」リンクをクリックして、データベース診断のページに移動します。ノート:
多層が確立されていない場合は、「データベースの詳細」ポップアップが開き、ターゲット・データベースのホスト、ポート、SID、ユーザーおよびJDBC URLが表示されます。これは、データベースがJVMDに登録されていない場合、またはJVMDが、データベースのJDBC URLに対応する登録済データベースを見つけられない場合に発生します。データベースを登録するには、「データベースの登録」ページを表示するには、ここをクリックしてくださいのリンクをクリックすると、「データベースの登録」タブが表示されます。データベースがすでに登録されている場合は、登録されたデータベースを上記のデータベースURLに関連付けるには、ここをクリックしてくださいのリンクをクリックして、JDBC URLを登録済データベースに関連付けます。ポップアップが開き、データベースのJDBC URLを登録済データベースに関連付けることができます。
モニター対象の履歴データについて、多層間の相互関係を表示するには、次のステップを実行します。
Oracle RACデータベースでの多層間の相互関係の確立
Oracle Real Application Cluster(Oracle RAC)データベースは、データベース・インスタンスおよびリスナーの構成が複雑です。ユーザー・アプリケーションでは、単一インスタンスのデータベースで使用するSIDのかわりに、Oracle RACサービスを使用してデータベースに接続します。ユーザー・アプリケーションは、実際のデータベース・インスタンスとは別のマシンをリスニングしているOracle RACリスナーに接続できます。多層間の相互関係が確立されるためには、すべてのリスナーおよびデータベース・インスタンスがEnterprise Managerの検出済ターゲットである必要があります。次のオプションのいずれかを使用して、多層間の相互関係を確立できます。
メモリー診断の表示
このページには、現在のメモリー・プールの使用量の詳細およびガベージ・コレクションの統計が表示されます。また、クラス・ロードおよびクラス・コンパイルに関する統計も表示され、ライブ・ヒストグラムの取得と保存、およびすべてのヒストグラムの表示の方法も表示されます。
リポジトリにロードされたJVMヒープのリアルタイム分析を実行するには、次のステップを実行します。
クラス・ヒストグラムの操作
jamagentの最適化レベルが0のときにクラス・ヒストグラムが表示されます。ヒストグラムにはサイズでソートした上位300行のデータが表示されます。クラス・ヒストグラムに対して様々な操作を実行できます。ここでは、以下の項目について説明します。
クラス・ヒストグラムの保存
クラス・ヒストグラムを保存するには、次のステップを実行します。
- 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「メモリー診断」オプションを選択します。
- 「メモリー診断」ページで「クラス・ヒストグラム」タブをクリックします。「ライブ・ヒストグラムの取得」をクリックして、クラス・ヒストグラム・データを取得します。「保存」をクリックします。
- 「クラス・ヒストグラムの保存」ウィンドウでスナップショットの名前と説明を入力し、「OK」をクリックします。
保存済ヒストグラムの表示
保存済ヒストグラムを表示するには、次のステップを実行します。
- 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「メモリー診断」オプションを選択します。
- 「メモリー診断」ページで「クラス・ヒストグラム」タブをクリックします。「保存されたヒストグラムを表示」をクリックします。「使用可能なヒープ・スナップショット」ページが表示されます。
- 「使用可能なクラス・ヒストグラム」表まで下にスクロールし、保存されたクラス・ヒストグラムのリストを表示します。
ヒストグラム・ジョブのスケジューリング
スケジューリングを行うことにより、ユーザーは定義した時刻にジョブを実行することで、JVMクラス・ヒストグラム・データをリポジトリに挿入できます。クラス・ヒストグラム・ジョブをスケジュールするには、次のステップを実行します。
クラス・ヒストグラムの比較
この比較機能により、ユーザーは表にリストされた2つのクラス・ヒストグラムのスナップショットを比較できます。クラス・ヒストグラムを比較するには、次のステップを実行します。
- 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「メモリー診断」オプションを選択します。
- 「メモリー診断」ページで「クラス・ヒストグラム」タブをクリックします。「保存されたヒストグラムを表示」をクリックします。「使用可能なヒープ・スナップショット」ページが表示されます。
- 「使用可能なクラス・ヒストグラム」表まで下にスクロールし、保存されたクラス・ヒストグラムのリストを表示します。任意の2つのクラス・ヒストグラムを選択して「比較」をクリックします。「クラス・ヒストグラムの比較」ページが表示されます。クラス名、インスタンス・サイズ(各スナップショットのサイズ)およびインスタンス数(スナップショットごと)が表示されます。
クラス・ヒストグラムの削除
クラス・ヒストグラムを削除するには、次のステップを実行します。
- 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「メモリー診断」オプションを選択します。
- 「メモリー診断」ページで「クラス・ヒストグラム」タブをクリックします。「保存されたヒストグラムを表示」をクリックします。「使用可能なヒープ・スナップショット」ページが表示されます。
- 「使用可能なクラス・ヒストグラム」表まで下にスクロールし、保存されたクラス・ヒストグラムのリストを表示します。削除するクラス・ヒストグラムを選択して「削除」をクリックします。確認メッセージが表示されます。「OK」をクリックして、クラス・ヒストグラムを削除します。
ヒープ・スナップショットの取得
ヒープのスナップショットは、JVMメモリーのスナップショットです。JVM内のすべてのオブジェクトのビューが、これらのオブジェクト間の参照とともに表示されます。メモリー使用状況のパターンの調査や、メモリー・リーク発生の可能性があるかどうかの検出に使用できます。ヒープ・スナップショットを取得するには、次のステップを実行します。
ヒープ・スナップショットの取得およびリポジトリへのロード
ヒープ・スナップショットを取得してリポジトリに自動的にロードするには、このオプションを選択します。
前提条件
-
JVMターゲットが実行されているホスト・マシンに管理エージェントがデプロイされている。
-
ヒープ・ローダー・ホストは、管理エージェントがデプロイされているスタンドアロン・マシン(高性能CPUとメモリーを搭載)である。
-
DBクライアント・ホームは
ORACLE_HOME
の場所であり、sqlldr
およびsqllplus
が存在する。 -
システムの一時ディレクトリに十分なディスク領域が確保されている。
-
create_jvm_diagnostic_db_user script
を使用してJVM診断DBユーザーが作成されている。このスクリプトはloadheap.zipに含まれます。loadheap.zipは次の場所にあります。$MW_HOME/plugins/oracle.sysman.emas.oms.plugin_12.X.X.X.X/archives/loadheap.zip
このスクリプトはloadheap.shによってコールされます。スクリプトを直接実行すると必須データの入力を求められます。詳細情報を説明するREADME.txt ファイルがloadheap.zipファイルに含まれています。
ヒープ・スナップショットを取得してリポジトリにロードするには、次のステップを実行します。
ヒープ・スナップショットの分析
JVM診断メモリー分析機能では、メモリー増加に関与しているオブジェクトを見つけるだけでなく、ルートセットからの使用可能性を追跡することもできます。この機能では、メモリー・リークに関与するぶらさがり参照を見つけることができます。メモリー・リークを検出するために、一定期間内の別々の時点におけるJVMヒープのスナップショットを取得します。スナップショット間で、JVMとJavaアプリケーションはオーバーヘッドのない最高速で実行を続行します。
ヒープのスナップショットは、JVMメモリーのスナップショットです。各スナップショットには、ヒープ内のオブジェクト、オブジェクト間の関係およびルートセットの到達可能性に関する情報が保存されます。スナップショットをリポジトリにロードし、それらを比較してメモリーの増加が発生している場所を確認できます。「JVMプール」またはJVMのホーム・ページのメニューから「ヒープ・スナップショットおよびクラス・ヒストグラム」オプションを選択します。次のページが表示されます。
このページには、次のリージョンがあります。
-
使用可能なヒープ・スナップショット: 「ターゲット名」および「ターゲット・タイプ」を指定して、表示するヒープ・スナップショットをフィルタリングします。また、「スナップ名」フィールドで「ヒープID」を指定し、特定のヒープ・スナップショットを検索し、それを表示できます。次の詳細が表示されます。
-
ヒープID: ヒープ・スナップショットの識別番号。
-
日付: ヒープ・スナップショットを取得した日付。
-
JVM名: JVMを実行しているサーバー。
-
ベンダー: JVMベンダーの名前。
-
サイズ: Javaヒープの合計サイズ。適切なヒープ・サイズを使用すると、アプリケーションのパフォーマンスを向上させることができます。
-
使用済: 使用済のヒープの量。
ノート:
ヒープ・スナップショットがHPROF形式で取得されると、「サイズ」と「使用量」のフィールドの値は0になります。
-
使用率(%): ヒープの使用率。
次の操作を実行できます。
-
「作成」をクリックしてヒープ・スナップショットを取得します。「ヒープ・スナップショットの取得」を参照してください。
-
ヒープ・スナップショットを選択し、「詳細」リンクをクリックして、「ルート」ページにドリルダウンします。「ルート別ヒープ使用状況の表示」を参照してください。
-
ヒープ・スナップショットを選択して「ロード」をクリックすると、ヒープ・スナップショットをリポジトリにロードできます。「ヒープ・スナップショットのアップロード」を参照してください。
-
ヒープ・スナップショットを選択して「レポート」をクリックすると、ヒープ・レポートをローカル・ホストにダウンロードできます。これらのレポートは、選択したヒープ・スナップショットについて生成され、リポジトリにロードされています。メモリー・リーク・レポートおよび逆パターン・レポートをダウンロードできます。
-
-
使用可能なクラス・ヒストグラム: 保存済のヒストグラムのリストが、スナップショットが取得された日付、スナップID、タイムスタンプ、JVMの名前とバージョン、説明などの詳細とともに表示されます。クラス・ヒストグラムの操作を参照してください。
ルート別のヒープ使用量の表示
ルートのクラスごとのヒープ使用状況を表示するには、次のステップを実行します。
上位40のオブジェクト
このページには、ルートから到達可能な上位40のオブジェクトが表示されます。オブジェクトは、オブジェクトから到達可能な調整可能メモリー(2つのヒープを比較している場合は、到達可能な調整済メモリーの差異)によって降順にソートされます。このビューには、オブジェクトの使用メモリー容量、オブジェクトから到達可能なメモリーの容量(すべての子のメモリー総使用容量)、指定オブジェクトから到達可能なオブジェクトの数など、様々な詳細情報が表示されます。
- 「ターゲット」メニューから「ミドルウェア」を選択し、JVMターゲットまたはJVMプール・ターゲットをクリックします。
- JVMまたはJVMプール・ホームページで、「Java仮想マシン」/「Java仮想マシン・プール」メニューから、「ヒープ・スナップショットおよびクラス・ヒストグラム」を選択します。
- 使用可能なヒープ・スナップショットのリストが表示されます。ヒープ・スナップショットを選択し、「詳細」クリックして、各ルートから到達可能なオブジェクトの数とメモリーを表示します。ルートから直接到達可能なオブジェクトを表示するには、「ルート」タブをクリックします。
- ルートをクリックして、上位40のオブジェクトを表示します。
次の詳細が表示されます。
-
シグネチャ: オブジェクトのシグネチャ。
-
ルート: ルートの内部識別子。
-
タイプ: 「クラス」、「インスタンス」、「メソッド」などのオブジェクト・タイプ。
-
フィールド:
-
スペース: オブジェクトが存在するヒープ領域。
-
バイト: オブジェクトによって使用される領域の量。
-
長さ: オブジェクトが配列の場合、配列の長さがここに表示されます。
-
子: オブジェクトから到達可能な子の数。
-
調整(バイト): このオブジェクトから到達可能な調整済メモリー。
-
保持メモリー: このノードでガベージ・コレクションを実行すると削除されるオブジェクトすべての合計サイズ。
-
深さ: このオブジェクトのルートからの遠さを示します。
ヒープ・オブジェクト情報
このページには、ヒープ・スナップショット内の特定のオブジェクトに関する情報が表示されます。次の詳細が表示されます。
-
ヒープ・オブジェクト情報
-
ガベージ: このオブジェクトがガベージであるか、またはルートから到達可能であるかを示します。
-
スペース: オブジェクトが存在するヒープ領域。
-
タイプ: 「クラス」、「インスタンス」、「メソッド」などのオブジェクト・タイプ。
-
シグネチャ: オブジェクトのシグネチャ。
-
バイト: オブジェクトによって使用される領域の量。
-
長さ: オブジェクトが配列の場合、配列の長さがここに表示されます。
-
子: オブジェクトから到達可能な子の数。
-
調整: このオブジェクトから到達可能な調整済メモリー。
-
保持メモリー: このノードでガベージ・コレクションを実行すると削除されるオブジェクトすべての合計サイズ。
-
深さ: このオブジェクトのルートからの遠さを示します。
-
-
ルート
-
タイプ: 「クラス」、「インスタンス」、「メソッド」などのルート・タイプ。
-
フィールド: ルートがローカル・スレッドの場合、スレッドおよびメソッドに関する情報がこのフィールドに表示されます。
-
-
オブジェクトの子
-
ガベージ: この子オブジェクトがガベージであるか、またはルートから到達可能であるかを示します。
-
スペース: 子オブジェクトが存在するヒープ領域。
-
タイプ: 「クラス」、「インスタンス」、「メソッド」などの子オブジェクトのタイプ。
-
シグネチャ: 子オブジェクトのシグネチャ。詳細ページにドリルダウンするには、リンクをクリックします。
-
バイト: 子オブジェクトによって使用される領域の量。
-
長さ: 子オブジェクトが配列の場合、配列の長さがここに表示されます。
-
子: 子オブジェクトから到達可能な子の数。
-
調整: この子オブジェクトから到達可能な調整済メモリー。
-
保持メモリー: このノードでガベージ・コレクションを実行すると削除されるオブジェクトすべての合計サイズ。
-
深さ: この子オブジェクトのルートからの遠さを示します。
-
-
オブジェクトの親
-
ガベージ: この親オブジェクトがガベージであるか、またはルートから到達可能であるかを示します。
-
スペース: 親オブジェクトが存在するヒープ領域。
-
タイプ: 「クラス」、「インスタンス」、「メソッド」などの親オブジェクトのタイプ。
-
シグネチャ: 親オブジェクトのシグネチャ。詳細ページにドリルダウンするには、リンクをクリックします。
-
バイト: 親オブジェクトによって使用される領域の量。
-
長さ: 親オブジェクトが配列の場合、配列の長さがここに表示されます。
-
子: 親オブジェクトから到達可能な子の数。
-
調整: この親オブジェクトから到達可能な調整済メモリー。
-
保持メモリー: このノードでガベージ・コレクションを実行すると削除されるオブジェクトすべての合計サイズ。
-
深さ: この親オブジェクトのルートからの遠さ。
-
オブジェクト別のヒープ使用量の表示
オブジェクト別のヒープ使用量を表示するには、「使用状況」タブをクリックします。次の詳細が表示されます。
-
オブジェクト・タイプ: 「インスタンス」、「配列」、「Klass」などのオブジェクトのタイプ。
-
ガベージ: このガベージがルートから到達可能かどうかを示します。
-
オブジェクト: オブジェクトの合計数。
-
合計メモリー: ルートから到達可能なメモリーの合計量。
-
システム: システム詳細。
ヒープ・スナップショットを別のヒープ・スナップショットと比較するには、「比較対象」をクリックします。ヒープ・スナップショットの比較を参照してください。
メモリー・リーク・レポート
メモリー・リーク・レポートを表示するには、「メモリー・リーク・レポート」タブをクリックします。
メモリー・リーク・レポートは、ヒープ・グラフで頻度の高いパターンを検出することによって、考えられるメモリー・リークの原因を示します。このタブには、ヒープ内で最も頻度の高いパターンを含むメモリー・リークの候補のリストを示し、可能性の高いメモリー・リーク原因を示しています。「レポートのダウンロード」をクリックすると、メモリー・リーク・レポートが.txt形式でダウンロードされます。
アンチパターン・レポート
「アンチパターン・レポート」タブをクリックします。アンチパターン・レポートは複数のセクションに分割されます。各セクションには、逆パターンの問題のサマリーまたはその一種が表示されます。たとえば、最初のセクションには、JOverflowで検出された最も重大な問題のサマリーが含まれます。2番目のセクションには、JavaクラスおよびJavaオブジェクトの合計数が含まれます。また、クラス別にグループ化した、メモリー使用量が上位のオブジェクトのヒストグラムが含まれます。3番目のセクションには、上位メモリー・コンシューマの参照チェーンが表示されます。それぞれの逆パターンセクションでは、オーバーヘッドが計算され、これは問題が解決すれば節約できるメモリー量を示しています。
JFRスナップショットの管理
Javaフライト・レコーダ(JFR)は、JVM内の動作およびJVMで実行中のJavaプログラムについて豊富な情報を提供します。この情報を使用して、プロファイリングおよび問題の根本的原因を解析できます。さらに、稼働中の非常に負荷の高い本番環境でも、パフォーマンス・オーバーヘッドを発生させることなく、JFRをいつでも有効にできます。
スレッド・サンプル(プログラムが時間を費やす場所を表示します)、ロック・プロファイルおよびガベージ・コレクションの詳細が含まれるJFRスナップショットを作成できます。
JFRスナップショットを作成するには、次のステップに従います。
設定
JFR記録の開始、停止および削除を行うには、表でJFRをハイライト表示して「設定」をクリックします。
「JFR管理」ページに、記録の統計が表示されます(「ステータス」、「データ終了時間」、「データ開始時間」、「圧縮された宛先」、「宛先ファイル」、「連続記録」、「期間」、「最大サイズ(KB)」、「最大保持時間(sec)」、「開始時間」)。
レポートの表示
「レポートの表示」をクリックして、GCレポートおよびレイテンシ・レポートを表示します。レイテンシおよびGCレポートが表示されるのはデータが検出された場合です。
JFRスナップショットのダウンロード
JMC (Java Mission Control)を使用し、JFRスナップショットをダウンロードして分析します。JFRスナップショットを選択して、「ダウンロード」をクリックします。ホスト資格証明の入力を要求される場合があります。資格証明を入力して「ダウンロード」をクリックし、スナップショットを保存する場所を指定します。
JVMの構成
「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「JVMターゲットの構成」オプションを選択します。「JVM情報の編集」ページが表示されます。JVMプール、ヒープ・ダンプ・ディレクトリの場所およびログ・レベルを変更できます。バイトコード・インスツルメンテーション(BCI)も変更できます。「保存」をクリックすると、変更内容が保存されます。
JVMの削除
「JVM」メニューで「ターゲットの削除」オプションを選択すると警告メッセージが表示されます。このメッセージには、削除されるターゲットの名前が表示されます。「はい」をクリックするとJVMが削除され、「いいえ」をクリックするとJVMのホーム・ページに戻ります。
スレッド・スナップショットの管理
特定のリクエストが遅くなっているか停止している場合、またはアプリケーション全体が遅くなっている場合は、トランザクションのリアルタイム・トレースを実行して、Javaアプリケーションの現在のアクティビティを確認できます。問題が発生しているスレッドとその実行スタックを調査し、スレッドがDB待機状態になっている時間、またはロックにより待機状態になっている時間を分析できます。あるスレッド(またはリクエスト)のアクティビティが他のスレッドのアクティビティや残りのJVMに影響する場合などの複雑な問題を、迅速に発見することができます。
すべてのアクティブ・スレッドをトレースし、リソースの使用状況、スレッドの状態、コール・スタックの情報などの詳細が含まれるトレース・ファイルを生成できます。トレース中に、ターゲット・スレッドの状態およびスタックが、目的の期間に対して設定した間隔でサンプリングされます。アクティブ・スレッドをトレースするには、次のステップを実行します。
トレース診断イメージの分析
トレース診断イメージには、リソースの使用状況、スレッドの状態、コール・スタックの情報などの詳細が格納されます。トレース診断イメージでは、短い間隔でスレッド・データが取得されます。アプリケーションが停止しているか遅くなっている場合は、これらのスレッドを分析して、遅延の原因となっているアプリケーション層を調査できます。
診断イメージの分析ページでは、次の操作を実行できます。
-
「説明」をクリックして、分析しているスレッド・スナップショットの詳細を表示します。次のサーバー状態グラフが表示されます。
-
状態別のアクティブ・スレッド: このグラフは、JVM内に存在するすべてのスレッドのステータスを示します。スレッドは、RMI、IO、NET、DB、CPU、LOCKなど、様々な状態があります。
-
JVMによるCPU使用率: このグラフは、JVMのCPU使用率を示します。
-
JVMによるヒープ使用率: このグラフは、JVMのヒープ使用率を示します。
-
-
表示されたデータは「メソッド名」、「JVM名」、「スレッド状態」、「DBState」などの様々な基準を指定してフィルタ処理できます。指定したフィルタを無視するには、「フィルタを無視」チェック・ボックスを選択します。「状態別のアクティブ・スレッド」、「上位リクエスト」、「上位メソッド」、「上位SQL」、「上位DBWaitイベント」および「上位データベース」のグラフが表示されます。
-
「スレッド」タブをクリックして、「スレッドの状態遷移」、「アクティブ状態別のメトリック」、および「メソッド」データを表示します。
ヒープ・スナップショットおよびクラス・ヒストグラムの表示
JVM診断メモリー分析機能では、メモリー増加に関与しているオブジェクトを見つけるだけでなく、ルートセットからの使用可能性を追跡することもできます。この機能を使用すると、メモリー・リークに関与している関連参照を見つけることができます。メモリー・リークを検出するには、一定期間内の別々の時点におけるJVMヒープのスナップショットを取得します。スナップショット間で、JVMとJavaアプリケーションはオーバーヘッドのない最高速で実行を続行します。
ヒープ使用量を表示および分析するには、「Java仮想マシン・プール」または「Java仮想マシン」メニューから「ヒープ・スナップショット」および「クラス・ヒストグラム」オプションを選択します。次のリージョンが表示されます。
-
使用可能なヒープ・スナップショット: 「ターゲット名」および「ターゲット・タイプ」を指定して、表示するヒープ・スナップショットをフィルタリングします。また、「スナップ名」フィールドで「ヒープID」を指定し、特定のヒープ・スナップショットを検索し、それを表示できます。次の詳細が表示されます。
-
ヒープID: ヒープ・スナップショットの識別番号。
-
日付: ヒープ・スナップショットを取得した日付。
-
JVM名: JVMを実行しているサーバー。
-
サイズ: Javaヒープの合計サイズ。適切なヒープ・サイズを使用すると、アプリケーションのパフォーマンスを向上させることができます。
-
使用済: 使用済のヒープの量。
-
使用率(%): ヒープの使用率。
次の操作を実行できます。
-
ヒープ・スナップショットを選択し、「詳細」リンクをクリックして、「ルート」ページにドリルダウンします。「ルート別ヒープ使用状況の表示」を参照してください。
-
ヒープ・スナップショットを選択して「ロード」をクリックすると、ヒープ・スナップショットをリポジトリにロードできます。
-
ヒープ・スナップショットを選択して「レポート」をクリックすると、ヒープ・レポートをローカル・ホストにダウンロードできます。これらのレポートは、選択したヒープ・スナップショットについて生成され、リポジトリにロードされています。メモリー・リーク・レポートおよび逆パターン・レポートをダウンロードできます。
-
-
使用可能なクラス・ヒストグラム: 保存済のヒストグラムのリストが、スナップショットが取得された日付、スナップID、タイムスタンプ、JVMの名前とバージョン、説明などの詳細とともに表示されます。次のオプションを使用できます。
-
詳細: このオプションをクリックすると、ヒープの詳細ビューにドリルダウンできます。
-
比較: 2つの行を選択して「比較」をクリックします。クラス名、インスタンス・サイズ(各スナップショットのサイズ)およびインスタンス数(スナップショットごと)が表示されます。
-
JVMオフライン診断
1つ以上のJVMターゲットについて、特定の期間の診断データを収集してオフライン・モードで分析できます。この項では、JVMのライブ・データを収集してオフライン・モードで分析するために使用できる各種オプションについて説明します。内容は次のとおりです。
「診断スナップショット」ページの使用
1つ以上のJVMターゲットの診断データを収集し、それらをオフライン・モードで分析できます。このページには、作成された診断スナップショットのリストが表示されます。検索基準を指定して、特定のスナップショットを取得できます。次の操作を実行できます。
-
作成: 「作成」をクリックして、1つ以上のJVMに対して診断スナップショットを作成します。診断スナップショットの作成ページが表示されます。
-
エクスポート: ファイルを選択して「エクスポート」をクリックし、診断データをファイルにエクスポートします。ファイルを保存する場所を入力します。保存されたファイルを同じまたは別のホスト・マシン上でオフライン・モードで確認、分析できます。
-
インポート: 「インポート」をクリックして、特定の収集オブジェクトに関する診断データが含まれているエクスポート・ファイルをインポートします。ファイル名を指定し、システムからファイルをアップロードします。エクスポートされたファイルを分析し、診断スナップショットのサマリーを表示できます。
-
分析: ファイルを選択して「分析」をクリックします。診断スナップショットの分析ページが表示されます。
-
削除: リストから診断スナップショットを選択して「削除」をクリックします。確認メッセージが表示されます。「OK」をクリックして診断スナップショットを削除します。
-
表示: ファイルを選択して「表示」をクリックします。診断スナップショットの表示ページが表示されます。
診断スナップショットの分析
このページには、診断スナップショットのサマリー詳細と診断スナップショットのすべての診断タイプのサマリーが表示されます。スレッド・スタック、スレッド状態、CPU使用率、ヒープ使用量、アクティブ・スレッドのグラフおよびガベージ・コレクションを表示できます。
診断スナップショットを分析するには、次のステップを実行します。
- 「ターゲット」メニューから、「ミドルウェア」を選択します
- 「ミドルウェアの機能」メニューから、「診断スナップショットの管理」を選択します。
- 診断スナップショット・ページで、リストからスナップショットを選択し、「分析」をクリックします。
- 指定した時間間隔で各JVMの詳細を分析できます。「詳細」をクリックし、JVMの詳細な診断情報を表示します。診断イメージの分析ページが表示されます。
JVM診断しきい値違反の表示
イベントは、1つ以上の管理対象エンティティに関連して、特定の時点でEnterprise Managerが検出した個々の事象です。通常の動作である場合も、問題のある動作を示す場合もあります。イベントの例としては、データベース・ターゲットの停止、パフォーマンスしきい値の違反、アプリケーション構成ファイルでの変更、ジョブの正常な完了、ジョブ失敗などがあります。
JVM診断しきい値違反は、Enterprise Managerのイベント・サブシステムに統合されています。しきい値違反が発生すると、Enterprise Managerイベントが生成されます。イベントを表示するには、次のステップを実行します。
Java Workload Explorerの使用
Java Workload Explorerでは、JVMおよびJVMプール・ターゲットに関連付けられたすべてのパフォーマンス統計の詳細なビューが提供されます。
Java Workload Explorerへのアクセス
Java Workload Explorerを使用するには:
-
「ターゲット」メニューから、「ミドルウェア」を選択し、「Java仮想マシン」ターゲットまたは「Java仮想マシン・プール」ターゲットを選択します。
このページには、「ターゲット」メニューから「ミドルウェア」を選択して、「ミドルウェアの機能」メニューを選択してもアクセスできます。Java Workload Explorerを選択します。
-
表示されるページで、ページの上部のJava Workload Explorerのリンクをクリックします。
パフォーマンス分析および検索基準
「パフォーマンス分析」メニューでは次の機能が提供されます。
図17-4 パフォーマンス分析

-
比較
使用可能なスナップショットを、現在のデータまたはセット(様々なドメインの複数のJVMのデータを含む)と比較します。これで、保存したベースライン・スナップショットと現在のアクティビティを比較できます。ターゲットJVMでの新しいアプリケーション・デプロイメント、アップグレードまたは構成変更の後で、これを使用してプロアクティブに偏差を確認します。
-
ターゲット
分析するターゲットを選択します。該当しなくなったターゲットを削除します。
-
セット
このオプションを使用して、現在のデータセットの比較対象のセットを作成、オープン、保存および管理します。
-
Javaワークロード・レポート
選択した時間ウィンドウのJVMのパフォーマンスに関する洞察を提供します。1時間未満の期間で最大10件のターゲットについてレポートが生成されます。レポートを作成することで、異なる時刻にレポートされたデータを使用してデータを分析できます。
次の表がJavaワークロード・レポートに表示されます。
各ターゲットの「サマリー」表:
-
JVMサマリー
-
診断の結果
-
しきい値違反
-
JVM統計
-
OS統計
-
GC統計
コンテキスト内のすべてのターゲットによって集計され、重要なメトリックによってソートされる複数の表:
-
リクエスト統計
-
リクエスト・インスタンス統計
-
セッション統計
-
ユーザー統計
-
アプリケーション統計
-
スレッド統計
-
メソッド統計
-
クラス統計
-
パッケージ統計
-
データベース統計
-
SQLの統計
-
データベース・イベント統計
-
データベース・スキーマ統計
-
データベース・モジュール統計
-
データベース・アクション統計
-
他の外部リソースの統計
-
ロック統計
-
ファイルの統計
-
補足情報
JVM起動パラメータ、完全なSQLおよびスタックが含まれます
-
検索基準
ページに含まれる「検索基準」を使用して、検索を絞り込み、レポートされるデータを最小限に抑えることができます。
図17-5 検索基準

デフォルトで使用されるキーワードは、「ECID継続時間(ms)」、「SQL継続時間(ms)」および「状態」です。「状態」を使用して、関心がある「スレッド状態」を選択できます。すべての検索において、フィールドを無視することを選択できます。
「フィールドの追加」メニューを使用して、リクエスト、ユーザー・セッション・データベース、内部リソース、コードおよびスレッドについてフィールドを選択できます。
グラフのハイライト
ページの一番上のグラフはワークロードを視覚的に表します。このグラフを使用すると、選択する時間を、関心がある期間に簡単に絞り込むことができます。デフォルトでは、グラフにはアクティブなスレッドの統計が表示されます(「RMI待機」、「I/O待機」、「ネットワーク待機」、「DB待機」、「CPU」および「ロック」)。グラフ内のデータは表形式で使用可能です。
「グラフ・メトリック」メニューを使用して、「メモリー使用量」、「CPU使用率」、「GCオーバーヘッド」(ガベージ・コレクション)および「レスポンスと負荷」についてレポートするようにグラフを絞り込むことができます。
「グラフの高さ」メニューでは、統計の詳細を表示するようにグラフを調整できます。
「グラフの解像度」メニューでは、時間軸(x軸)のデータポイントを増やして、グラフに表示されるスパイクを増やすことができます。
診断
JVMまたはJVMプールに関連付けられた統計データは、タブの形式で使用可能です。診断タブは、リージョンまたは関連するリージョンのセットに基づいてユーザーの目的に対応します。タブには関連するサブタブが含まれることがあります。
ほとんどのタブには「アクション」メニューと「表示」メニューがあります。多くの場合、「アクション」メニューのオプションは、「検索に追加」や「セットに追加」のように、画面の他の部分で選択できるオプションと同じです。その他のメニュー・オプションは次のとおりです。
-
検索に追加: 要素を検索基準に追加します。
図17-6 検索に追加
-
セットに追加: 要素をセット基準に追加します。
図17-7 セットに追加
-
ログ・ビューア: ログ・メッセージを表示します。
-
コール・ツリーの表示: メソッドと、メソッドを実行するコールの時間の割合を表示します。
-
スレッドの遷移の表示: 時間経過に伴うスレッドの変化をグラフィック表示します。
-
セッション診断: これはRUEI (Real User Experience Insight)ベースの分析です。JVMターゲットがRUEIシステムで有効化されている場合のみ使用できます。
次のタブがあります:
-
概要:
図17-8 「概要」タブ
統計: 「OSR」、「コンテキスト切替え(/秒)」、「ホスト・メモリー(%)」、「スワップ領域(%)」、「オープン・ファイル・ディスクリプタ(%)」、「最大ヒープ・サイズ(MB)」、「最小ヒープ・サイズ(MB)」、「コンテナ・タイプ」、「コンテナ名」、および「バージョン」
アクション: 「検索に追加」、「ログ・ビューア」、「診断の結果」
-
「リクエスト」、「ECID」、「セッション」および「ユーザー」
-
リクエスト
図17-9 「リクエスト」タブ
統計には、時間(ms)、最大時間(ms)、JVM CPU(秒)、割当て(MB)、件数、JVM時間(秒)、スレッド状態が含まれます。
サンプルのリクエスト・メトリック(件数、割当て、時間など)は、スタックのサンプルの取得中に捕捉される特定のインスタンスから収集されたデータに基づいて計算されます。非サンプル・メトリックは、前回のサンプリング以降に実行されたすべてのインスタンスに基づいて計算されます。
次に例を示します:
リクエストの平均実行時間は50から1500ミリ秒で、平均実行時間は100ミリ秒です。リクエストは1秒当たり1000回実行されます。
サンプリングでは主に低速の実行が捕捉されます。サンプリングされたカウントは1000/sより大幅に小さく、平均実行時間およびその他のメトリックは捕捉された低速の実行の動作を反映します。13.3で導入された新機能では、すべてのリクエスト実行がカウントおよび測定されます。前述の例では、カウントは100/sを示し、平均は100ミリ秒です。
ノート:
-
「スレッド状態」および「JVM時間」メトリックは、サンプル・データとしてのみ使用できます。
- まったくサンプリングされていない(JVMDによってサンプリングされたときにスレッド・スタックにインスタンスが1つもない)リクエストは、その2秒間にはまったく表示されません。
アクション: 「検索に追加」、「コール・ツリーの表示」、「セットに追加」、および「スレッドの遷移の表示」。
-
-
アプリケーション
統計: 「JVM時間(sec)」、「スレッド状態」、および「アプリケーション名」。
アクション: 「検索に追加」、「セットに追加」
-
ユーザー
統計: 「JVM時間(sec)」、「スレッド状態」、および「ユーザー」。
アクション: 「検索に追加」、「セットに追加」、および「ログ・ビューア」。
-
セッション
統計: 「マイナーGC時間(ms)」、「マイナーGC数」、「メジャーGC時間(ms)」、「メジャーGC数」、「JVM時間(sec)」、「スレッド状態」、「リクエスト数」、「ユーザー、および「セッションID」。
アクション: 「検索に追加」、「コール・ツリーの表示」、「セットに追加」、および「スレッドの遷移の表示」。
-
リクエスト・インスタンス
統計: 「マイナーGC時間(ms)」、「マイナーGC数」、「メジャーGC時間(ms)」、「メジャーGC数」、「GCオーバーヘッド(ms)」、「割当て(MB)」、「JVM CPU(sec)」、「期間(ms)」、「JVM時間(sec)」、「スレッド状態」
アクション: 「検索に追加」、「コール・ツリーの表示」、「セットに追加」、「ログ・ビューア」、「スレッドの遷移の表示」、および「セッション診断」。
-
-
外部リソース
図17-10 「外部リソース」タブ
-
外部リソース概要
「ネットワーク待機」および「データベース」(「JVM時間(合計の%)」、「JVM時間(内部の%)」および「JVM時間(sec)」)
-
データベース
統計: 「最大期間(ms)」、「平均継続時間(ms)」、「件数」、「JVM時間(sec)」、「詳細」、および「データベース」
アクション: 「検索に追加」、「コール・ツリーの表示」、「セットに追加」、および「データベース・ドリル・ダウン」。
-
SQL問合せ
統計: 「最大期間(ms)」、「平均継続時間(ms)」、「JVM時間(sec)」、「データベース」、「SQL ID」、および「SQL文」
アクション: 「検索に追加」、「コール・ツリーの表示」、「セットに追加」、および「SQLの詳細」
-
データベース・イベント
統計: 「最大期間(ms)」、「平均継続時間(ms)」、「件数」、「JVM時間(sec)」、「データベース」、および「データベース・イベント」
アクション: 「検索に追加」、「コール・ツリーの表示」、「セットに追加」
-
データベース・スキーマ
統計: 「最大期間(ms)」、「平均継続時間(ms)」、「件数」、「JVM時間(sec)」、「データベース・スキーマ」
アクション: 「検索に追加」、「コール・ツリーの表示」、「セットに追加」
-
データベース・モジュール
統計: 「最大期間(ms)」、「平均継続時間(ms)」、「件数」、「JVM時間(sec)」、「データベース・モジュール」
アクション: 「検索に追加」、「コール・ツリーの表示」、「セットに追加」
-
データベース・アクション
統計: 「最大期間(ms)」、「平均継続時間(ms)」、「件数」、「JVM時間(sec)」、「データベース・アクション」
アクション: 「検索に追加」、「コール・ツリーの表示」、「セットに追加」
-
他の外部リソース
統計: 「JVM時間(sec)」、「プロトコル」、「リクエスト」
アクション: 「検索に追加」、「セットに追加」
-
-
内部リソース
図17-11 「内部リソース」タブ
-
内部リソース概要
-
CPU - 「JVM時間(合計の%)」、「JVM時間(内部の%)」および「JVM時間(sec)」
-
ロック - 「JVM時間(合計の%)」、「JVM時間(内部の%)」、「JVM時間(sec)」
-
I/Oファイル - 「JVM時間(合計の%)」、「JVM時間(内部の%)」および「JVM時間(sec)」
-
-
ロック
統計: 「保持されているロック」(「JVM時間(sec)」、「平均継続時間(ms)」、「最大期間(ms)」)および「待機中のロック」(「スレッドの傾向」、「JVM時間(sec)」、「平均継続時間(ms)」および「最大期間(ms)」)
アクション: 「検索に追加」、「詳細の表示」、「セットに追加」
-
ファイル
統計: 「I/Oファイル」および「JVM時間(sec)」
アクション: 「検索に追加」、「セットに追加」
-
-
コード
図17-12 「コード」タブ
統計: 「合計の%」、「JVM時間(sec)」および「パッケージ」
-
メソッド
アクション: 「検索に追加」、「コール・ツリーの表示」、「セットに追加」
-
クラス
アクション: 「検索に追加」、「セットに追加」
-
パッケージ
アクション: 「検索に追加」、「セットに追加」
-
-
スレッド
図17-13 「スレッド」タブ
統計: 「文字の書込み」、「文字の読取り」、「待機件数」、「待機時間(sec)」、「ブロック数」、「ブロックされた時間(ms)」、「ボトルネック(%)」、「スタック(%)」、「割当て(MB/秒)」、「JVM CPU(/分)」
アクション: 「検索に追加」、「コール・ツリーの表示」、「セットに追加」、「ログ・ビューア」、「スレッドの遷移の表示」、「サンプル分析」
JVMDの管理およびトラブルシューティング(グローバル)
特定のJVM診断エンジンで問題が発生した場合は、「JVMDの管理およびトラブルシューティング」機能によって提供される統計と診断が問題の解決に役立ちます。
JVMDの管理およびトラブルシューティング・ページにアクセスするには、次の手順に従います。