17 JVM診断の使用

ここでは、JVM診断を使用して実行できるタスクについて説明します。

この章の内容は次のとおりです。

JVM診断の設定

JVM診断の設定と構成を行うには、次のステップを実行します。

  1. 「設定」メニューで「ミドルウェア管理」を選択して、「エンジンおよびエージェント」を選択します。RUEI/JVMDエンジン・リストが表示されます。すべての列を選択すると、「JVM診断エンジン」行に、次の詳細が表示されます。
    • 名前: JVM診断エンジンに割り当てられている名前。このIDによって、すべてのプロセスでJVM診断エンジンが識別されます。

    • タイプ: JVM診断エンジン(デフォルトでは、この列は表示されません)。

    • ホスト: JVM診断エンジンがデプロイされているマシン。

    • ポート: JVM診断エンジンがデプロイされているサーバーのHTTPポート。

    • SSLポート: JVM診断エンジンがデプロイされているサーバーのSSLポート。

    • 可用性: エンジンが使用可能になっていた時間の割合。

    • ステータス: JVM診断エンジンのステータス。オプションは、「アクティブ」、「非アクティブ」または「N/A」(使用不可)です。

    • サーバー: エンジンが配置されているサーバー。

    • バージョン: このJVM診断エンジンのビルド・バージョン。

  2. 「JVM診断エンジン」行を選択し、「構成」をクリックしてJVM診断エンジン・パラメータ、JVMSとプール、データベースおよびヒープ・ローダーを構成します。表示されるタブは次のとおりです。

ノート:

JVMDロード・バランサの情報も「設定」ページに表示されます。表に、ロード・バランサのURLとステータス、および関連付けられているエンジンのリストが含まれます。

JVM診断エンジンの構成

エンジン・パラメータと詳細設定を定義することで、JVM診断エンジンを構成できます。その後で新しいアイドル・スレッド・ルールおよびシステム・コール・ルールを作成できます。既存のルールに対する操作には、ルールのインポートおよびエクスポートとルールの削除が含まれます。

  1. 「設定」メニューで「ミドルウェア管理」を選択して、「エンジンおよびエージェント」を選択します。RUEI/JVMDエンジン表の「JVM診断エンジン」行を選択して、「構成」をクリックします。
  2. 「JVMD構成」タブをクリックします。
  3. 「JVMDエンジン・パラメータ」リージョンで次の詳細を変更できます。
    • JVMDエンジン・ログ・レベル: コンソール診断メッセージのログ・レベル。次の1から5のログ・レベルがサポートされています。

      • ERROR–1

      • WARN–2 (警告)

      • INFO–3 (情報)

      • DEBUG–4

      • TRACE–5

      デフォルトのログ・レベルはINFO–3です。

    • クロス層ログ・レベル: 複数の層にまたがる診断メッセージのログ・レベル。次の1から5のログ・レベルがサポートされています。

      • ERROR–1

      • WARN–2 (警告)

      • INFO–3 (情報)

      • DEBUG–4

      • TRACE–5

      デフォルトのログ・レベルはINFO–3です。

    • エージェント・リクエスト・タイムアウト: JVM診断エンジンがJVM診断エージェントの応答を待機する秒数。応答の待機中に、モニター対象のJVMが非常にビジーでコンソールがタイムアウトして切断される場合は、この値を大きくできます。

    • モニタリング有効化: このチェック・ボックスを選択して、モニタリングの開始と停止を切り替えます。

  4. 詳細設定
    • (時間)より古い詳細データをパージ: 詳細なモニタリング対象サンプルの保持期間。

    • スレッド・スタック・リポジトリ挿入率(%): 1から100までの数値を入力します。スレッド・スタックは指定したレートでリポジトリに格納されます。

    • システム・サンプル間隔: モニタリング時にシステム詳細(累積CPUカウンタ、ヒープ・サイズおよびガベージ・コレクション(GC)数)を収集する頻度。

    • この日数を超えた集計データのパージ: 集計されたモニタリング対象サンプルの保持期間。

      ノート:

      このフィールドは、JVMTI(レベル0)の最適化は適用されません。

    「保存」をクリックしてパラメータを保存します。

  5. 「スレッド・ルール」リージョンで、次の操作を定義できます。
    • アイドル・スレッド・ルール: アイドル・スレッド・ルールにスレッドを追加して、アイドルなスレッドとしてマークします。アイドルとしてマークされているスレッドはすべてモニターされません。「新規ルール」をクリックして、新しいアイドル・スレッド・ルールを作成し、アイドル・スレッド・ルール情報を指定します。

      • ルール・タイプ: ルール・タイプには次のものがあります。

        モニター(ロック待機): 指定した名前のロックでロックされているスレッドを無視する場合、このタイプを選択します。

        現在のコール: 選択した機能(クラスとメソッドの組合せ)にコールを行うすべてのスレッドを無視するにはこのタイプを選択します。ワイルド・カードを指定することができ、たとえばweblogic.servlet.*と指定すると、この条件を満たすすべてのスレッドが無視されます。

        ノート: スタックの現在のコールは、上から下に並んだスタックの最初のフレームです。つまり、機能(クラスとメソッドの組合せ)はシステム・コールではありません。java.*などユーザー・アプリケーションに関係しないコールがシステム・コールと見なされます。

        スレッド名: 特定の名前のスレッドを無視する場合は、このタイプを選択します。

      • ルールの値: 「ルールの値」には、完全修飾クラス名、メソッド、その後ろにクラスとメソッドの組合せが含まれる必要があります。

        「現在のコール」の例はweblogic.socket.PosixSocketMuxer->processSocketsです。

        「モニター(ロック待機)」の例はweblogic.socket.PosiSocketMuxer$1です。

        アイドル・スレッド・ルールで指定された基準に一致するスレッドはすべて、「アクティブ・スレッドの表示」画面に表示されません。

      • グローバル・ルール: アイドル・スレッド・ルールをすべてのJVMプール・ターゲットに適用する場合に、このチェックボックスを選択します。このボックスがチェックされていない場合、このルールが適用可能になる1つ以上のJVMプールを選択する必要があります。

      アイドル・スレッド・ルールで指定された基準に一致するスレッドはすべて、「アクティブ・スレッドの表示」画面に表示されません。

    • システム・コール・ルール: システム・コール・ルールにメソッドを追加して、システム・コールとしてマークします。java.*などユーザー・アプリケーションに関係しないコールがシステム・コールと見なされます。「新規ルール」をクリックして、新しいシステム・コールを作成し、sun.*やjava.*などの一致パターンを指定します。

      「システム・コール・ルール」表のルールと一致するすべてのメソッドは、システム・コールとして識別されます。

JVMおよびJVMプールの構成

一連のJVMをJVMプールにグループ化することで、すべての関連JVMにおけるモニタリング情報を単一のビューで提供できます。WebLogicドメイン内のすべてのJVMプールを表示し、新規JVMプールを作成し、既存のJVMプールを編集できます。

  1. 「設定」メニューで「ミドルウェア管理」を選択して、「エンジンおよびエージェント」を選択します。RUEI/JVMDエンジン表の「JVM診断エンジン」行を選択して、「構成」をクリックします。

  2. 「JVMおよびプール」タブをクリックします。使用可能なすべてのJVMプールのリストが表示されます。プールごとに、「ポーリング有効」フラグを設定して「ポーリング間隔」を指定できます。「ポーリング有効」フラグが「はい」に設定されている場合、このプールに属するJVMは、ポーリング間隔に基づいて定期的にアクティブなリクエストにポーリングされます。

  3. 「プールの作成」をクリックし、新規プールを作成します。

    1. 「JVMプールの新規作成」ダイアログ・ボックスで、JVMプールの名前と説明を入力します。

    2. 「ポーリング間隔」フィールドで、モニタリング(ポーリング)が有効なときに、このプールに属するJVMのサンプリング間隔を指定します。

    3. 「ポーリング有効」チェック・ボックスを選択して、このプールに属するJVMをポーリングします。

    4. 「作成」をクリックしてJVMプール情報を保存します。

  4. プールを削除するには、プールをハイライト表示して「削除」をクリックします。

  5. JVMプールまたはJVMを選択して「詳細」をクリックし、JVMプールまたはJVMの追加の詳細を表示します。

  6. 「ダウンロード」をクリックしてJVM診断コンポーネントをダウンロードします。次のコンポーネントをダウンロードできます。

    • JVMDエージェント: すべてのサポートされているプラットフォームのJVM診断エージェント・バイナリが含まれています。

    • LoadHeap: ヒープ・スナップショットをリポジトリにアップロードするスクリプトが含まれています。

    • JFRのロード: JFRスナップショットをリポジトリにアップロードするスクリプトが含まれています。JMC (Java Mission Control)を使用し、JFRスナップショットをダウンロードして分析します。

  7. JVMプールまたはJVMを選択して、「構成」をクリックします。

    JVMプールについては、「JVMプールの構成」を参照してください。

    JVMについては、JVMの構成を参照してください。

データベースの登録

次のステップを実行して、データベースを登録します。

  1. 「設定」メニューで「ミドルウェア管理」を選択して、「エンジンおよびエージェント」を選択します。RUEI/JVMDエンジン表の「JVM診断エンジン」行を選択して、「構成」をクリックします。
  2. 「データベースの登録」タブをクリックします。登録済データベースのリストが表示されます。データベース名、ホスト、モニター対象データベースのOracle SIDおよびリスナー・ポート番号が表示されます。
  3. 次の操作を実行できます。
    • データベース・インスタンスの追加: 「追加」メニューから「データベース・インスタンス」を選択して、単一インスタンスまたはOracle Real Application Cluster (RAC)のデータベース・ターゲットを登録します。

    • カスタム・データベースの追加: 「追加」メニューから「カスタム・データベース」を選択して外部データベース・ターゲットを登録します。名前、ホスト、ポート、SID、インスタンスID、サービス、ユーザー名、パスワードおよび確認用パスワードを指定し、「接続テスト」をクリックしてデータベースの詳細を検証します。確認したら、「OK」をクリックしてデータベースを登録します。

    • 削除: リストからデータベースを選択し、「削除」をクリックして、登録済のデータベースを削除します。

    • 編集: データベース・インスタンスは編集できます。ただし、編集できるのはカスタム・データベースのみです。リストからカスタム・データベースを選択して、「編集」をクリックします。

    • DB URLの管理: このオプションを使用して、JVM診断およびデータベース診断の間のクロス層相関を確立します。データベースを選択し、「DB URLの管理」をクリックします。データベースのデータベースURLの関連付け/関連付け解除で、「データベースURL」を選択して「追加」をクリックし、関連付けるデータベースのURLを指定します。

      ノート:

      DBユーザーは、モニター対象のアプリケーションを実行するユーザーと同一であり、ターゲット・データベースの固定ビューであるGV_$SESSIONGV_$SESSION_WAITGV_$PROCESSGV_$SQLTEXTGV_$SQLAREAGV_$LOCKおよびGV_$LATCHNAMEに対するSELECT権限を持っている必要があります。

      jvmadminなどのSELECT権限をユーザーに付与するには、コマンドを次のとおりに入力します。

      SQL> grant select on SYS.GV_$LATCHNAME to jvmadmin

      異なるデータベース・ユーザーが複数のアプリケーションを実行している場合、単一のデータベース・エージェントに複数の登録が必要になる場合があります。

    • エクスポート: このオプションでは、情報がスプレッドシート形式で提供されます。スプレッドシートを開いたり、または今後の使用のために保存したりできます。

  4. データベースが登録された後、JVM診断エンジンは、特定のJVMについてモニターされているアプリケーションと基礎となるデータベース間の層間JVMコールのモニタリングを開始します。
  5. 「ダウンロード」をクリックしてJVM診断エージェント、ロード・ヒープ、ロードJFR zipなどの様々なバイナリを手動でダウンロードし、それらをデプロイします。次のものをダウンロードできます。
    • JVM診断エージェントのWARファイル: 「JVM診断エージェントWeb xmlパラメータ」ウィンドウが表示されます。「使用可能なマネージャ」ドロップダウンから、<host>:<port>という形式(通常の通信用)または<host>:<port>(セキュアな通信)という形式(SSLポートを介した通信用)のエントリを選択するか、「その他」を選択します。「その他」を選択する場合、JVM診断エージェントの接続先となるマネージャIPアドレスおよびマネージャ・ポートを指定する必要があります。JVM診断エージェントのダウンロード時に、次のパラメータを変更できます。

      • チューニング/タイムアウト・パラメータ: 「接続再試行時間」、「GC待機タイムアウト」、「ロング・リクエスト・タイムアウト」および「アイドル・エージェント・タイムアウト」を変更できます。

      • ターゲット・アソシエーション・パラメータ: 「WebLogic Server」を選択する場合、「ターゲット名」および「プール名」を指定できます。「他のサーバー」を選択する場合、「グループIDプロパティ」および「プール名」を指定できます。

      • ロギング・パラメータ: エージェント・ログ・レベルを変更できます。

      • 最適化レベル: 最適化レベルを変更できます。

    • ヒープのロード: loadheap.zipが指定した場所に保存されます。

    • JFRのロード: JFRスナップショットをリポジトリにアップロードするスクリプトが含まれています。JMC (Java Mission Control)を使用し、JFRスナップショットをダウンロードして分析します。

ヒープ分析ホストの構成

ノート:

ヒープの分析およびロード・ステップでは、ヒープ分析ホストのメモリー要件が大きくなります。ヒープ分析ホストに64ビットJVMと十分な空きメモリーがあることを確認します。

ヒープ分析ホストを構成するには、次のステップに従います。

  1. 「設定」メニューで「ミドルウェア管理」を選択して、「エンジンおよびエージェント」を選択します。RUEI/JVMDエンジン表の「JVM診断エンジン」行を選択して、「構成」をクリックします。
  2. 「ヒープ分析ホスト」タブをクリックします。「ヒープ分析ホストの構成」ページが表示されます。
  3. ヒープ分析ホストを構成するには、「追加」をクリックして次の詳細を入力します。
    • 別名: ホストの別名を入力します。

    • ヒープ分析ホスト: 管理エージェントがデプロイされているヒープ分析ホストです。

  4. 「保存」をクリックします。

登録済のJVMおよびマネージャの表示

登録されたJVMおよびJVMマネージャのリストを表示するには、次のステップを実行します。

  1. 「設定」メニューで「ミドルウェア管理」を選択して、「エンジンおよびエージェント」を選択します。
  2. 登録済のJVM診断エンジンのリストが表示されます。
    • 名前: JVM診断エンジンに割り当てられている名前。このIDによって、すべてのプロセスでJVM診断エンジンが識別されます。

    • タイプ: エンジンのタイプ(この場合はJVM診断エンジン)。(デフォルトでは、この列は表示されていません。)

    • ホスト: JVM診断エンジンがデプロイされているマシン。

    • ポート: JVM診断エンジンがデプロイされているサーバーのHTTPポート。

    • SSLポート: JVM診断エンジンがデプロイされているサーバーのSSLポート。

    • 可用性(%): エンジンが使用可能になっていた時間の割合。

    • ステータス: JVM診断エンジンのステータス。オプションは、「アクティブ」、「非アクティブ」または「N/A」(使用不可)です。

    • サーバー: エンジンが配置されているサーバー。

    • バージョン: このJVM診断エンジンのビルド・バージョン。

    「JVM診断エンジン」行を選択し、「構成」をクリックしてJVM診断エンジン・パラメータ、JVMとプール、データベースおよびヒープ分析ホストを構成します。

    • JVMD構成

    • JVMおよびプール

    • データベースの登録

    • ヒープ分析ホスト

    • Hybrid Cloud Gateways構成

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ホームページに表示されることはありません。イベントをインシデントに昇格するには、次のステップを実行します。

  1. 「設定」メニューで「インシデント」,、「インシデント・ルール」の順に選択します。
  2. 「ルール・セットの作成」をクリックします。「ルール・セットの作成」ページの「ターゲット」リージョンで、「すべてのターゲットのタイプ」オプションを選択します。「Java仮想マシン」を選択し、Java仮想マシン・プールのターゲット・タイプを選択します。
  3. 「ルール」リージョンで「作成」をクリックし、「作成するルールのタイプを選択」ウィンドウで「受信イベントおよびイベントの更新」オプションを選択して「続行」」をクリックします。「新しいルールの作成: イベントの選択」ページが表示されます。「タイプ」ドロップダウン・リストで、「JVM診断しきい値違反」を選択します。
  4. 次に、JVM診断しきい値違反タイプの特定のイベントを選択します。
  5. 「追加」をクリックします。「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プール情報の編集」ページでプールしきい値を編集します。

  1. 「JVMプールのしきい値の編集」リージョンに、次の詳細が表示されます。
    • レベル: しきい値違反が発生すると、レベルがR(赤)またはY(黄色)になります。

    • メトリック: モニター対象の属性またはメトリック。

    • しきい値: メトリックのクリティカルおよび警告のしきい値。モニター対象のサンプルが最小数に達した後に、しきい値を超えると違反になります。

  2. 「追加」をクリックして修正処理を追加します。リストから修正処理を選択し、「OK」をクリックします。次のいずれかを選択できます:
    • アクションなし: 修正アクションは定義されません。

    • トレース・ダンプ: このオプションを選択して、しきい値違反が発生したときに特定のスレッドまたはすべてのアクティブなスレッドをトレースします。次のパラメータを定義できます。

      • ポーリング間隔(ミリ秒): スナップショットを繰り返す間隔。

      • ポーリング継続時間(秒): スナップショットを取得する継続時間。

      • 説明: トレース・ダンプの目的の説明です。他のユーザーに関する情報が含まれます。

      • スレッド詳細: スナップショットにスレッド詳細を含める必要があるかどうかを指定できます。

      • スレッドの変更の試行: 場合によって、スレッドに関連付けられているスタックが急変して、スナップショットの取得が困難になることがあります。このパラメータを選択すると、スレッドを一時停止してスナップショットを取得できます。

      • ネットワーク待機を含む: スナップショットにネットワーク待機のスレッドを含める必要があるかどうかを指定します。

      • すべてのスレッド: スナップショットにすべてのスレッド(アクティブおよびアイドル)を含める必要があるかどうかを指定します。

    • ヒープ・ダンプ: このオプションを選択して、しきい値違反が発生したときにヒープ・ダンプを生成します。「ヒープ・スナップショット・タイプ」は次のとおりです。

      • TXT: JVM診断での分析用のテキスト(txt)。

      • HPROF: 外部ツールによる分析用のバイナリ形式。

      しきい値違反が原因で修正処理(トレース・ダンプまたはヒープ・ダンプ)が生成されると、イベント詳細ページにトレース・ダンプまたはヒープ・ダンプのファイルが表示されます。「JVM診断しきい値違反の表示」を参照してください。

    • JFRスナップショット: このオプションを選択すると、JFRのダンプが生成されます。

      JFRスナップショットの作成は、Java JVMおよびOracle JDK 1.7.0_04以降に対してサポートされます。Oracle JDK 1.7.0_04以降で、JDK 1.8.0_40より前の場合、JVMプロセスを'-XX:+UnlockCommercialFeatures -XX:+FlightRecorder'のJavaオプションで実行する必要があります。これらのJavaオプションはJDK 1.8.0_40以降では不要です。

    • クラス・ヒストグラム: このオプションを選択すると、クラス・ヒストグラムのダンプが生成されます。

    • 診断スナップショット: このオプションを選択すると、診断ダンプが生成されます。

      このスナップショットで使用するには、期間(分)を選択します。

  3. 「保存」をクリックしてしきい値を保存します。

JVMプールの削除

JVMプールは次の場所で削除できます。

  • 「ミドルウェア」ページ: JVMプールをハイライト表示して、「削除」をクリックします。

  • JVMプールのホームページ: 「Java仮想マシン・プール」メニューで「ターゲット設定」を選択し、「ターゲットの削除」をクリックします。

警告メッセージが生成されます。削除されるターゲットの名前が表示され、プールの削除時には、プール内のすべてのJVMターゲットも表示されます。「はい」をクリックするとJVMプールが削除され、「いいえ」をクリックするとJVMプールのホーム・ページに戻ります。

JVMプールのグループへの追加

JVMプールのホームページで「Java仮想マシン・プール」メニューを選択します。「ターゲット設定」を選択して「グループに追加...」をクリックします。

JVMプールを1つ以上のグループに追加するには、このオプションを選択します。ユーザーがオペレータ権限を持つポップアップ・ウィンドウが開き、グループのリストが表示されます。1つ以上のグループを選択し、「追加」をクリックすると、ターゲットがグループに追加されます。

JVMの管理

プール内の特定のJVMのモニター、履歴およびリアルタイム・データの表示などを行うことができます。次の操作を実行できます。

JVMのホームページの表示

JVMホームページには、JVMプール内のすべてのJVMの概要および構成情報が表示されます。JVMのホームページを表示するには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。
  2. JVMホームページに次の詳細が表示されます。
    • サマリー: JVM、ヒープ・サイズ、帰属するWebLogic Server、およびコンポジット・アプリケーションの可用性ステータスなどのJVMの詳細が表示されます。リージョンには、発生したオープン・インシデントの数および構成変更の数も表示されます。インシデントの番号をクリックすると、インシデント・マネージャ・ページにドリルダウンします。

    • JVMアクティビティ(過去15分間): 過去15分間のJVMのアクティブ・スレッド数。スレッドの詳細を確認するには、スレッドをクリックします。JVMアクティビティのグラフ(「アクティブ・スレッドの状態」、「メモリー使用量」、「CPU使用率」、「GCオーバーヘッド」および「レスポンスと負荷」)を選択することもできます。

    • 概要(過去15分): JVM様々なスレッドの状態を色分けした列で表示します。このリージョンはページのカスタマイズを使用して追加できます。

      表示されるJVMの現在のアクティビティには、「ターゲット・ステータス」、「スレッド」(「CPU」、「DB待機」、「ロック」、「ネットワーク待機」、「IO待機」、「RMI待機」)、「JVM時間(sec)」、「診断の結果」、「リソース(%)」、「ホストCPU(%)」、「JVM CPU (%)」、「JVMヒープ(%)」、「最大JVMヒープ(%)」、「GCオーバーヘッド(%)」、「メジャーGC数」、「マイナーGC数」、「メジャーGC時間(ms)」、「マイナーGC時間(ms)」、「ホスト」、「OS」、「ベンダー」、「バージョン」、「コンテナ名」、「コンテナ・タイプ」、「最小ヒープ・サイズ(MB)」、「最大ヒープ・サイズ(MB)」、「オープン・ファイル・ディスクリプタ(%)」、「スワップ領域(%)」、「ホスト・メモリー(%)」、「コンテキスト切替え(/秒)」、「OSR」が含まれます。

    • 上位リクエスト(過去15分間): JVMの上位リクエストが表示されます。統計には、各リクエストのJVM時間、JVM CPU、スレッド割当て、件数、最大期間、各リクエストの平均期間、スループット(/分)および最小期間(ms)が含まれます。

JVM診断のパフォーマンス・サマリーの表示

「パフォーマンス・サマリー」ページでは、JVMターゲットのパフォーマンス・メトリック(システム・スレッドおよびアクティブ・スレッド)を表示できます。このページには、JVMターゲットに関する一連のグラフが表示されます。JVMパフォーマンス・メトリックを表示するには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。
  2. 「Java仮想マシン」メニューから、「パフォーマンス・サマリー」オプションを選択します。次のページが表示されます。
  3. 一定期間のJVMパフォーマンス・メトリックの値を示す一連のデフォルトのグラフが表示されます。「警告のしきい値」または「クリティカルのしきい値」に達したまでの任意の期間のメトリックを確認します。

    いずれのメトリックも「警告のしきい値」または「クリティカルのしきい値」を超えていない場合は、JVMのパフォーマンスと可用性においてメモリーが要因であると示している可能性があります。メモリー・リークがあるか、またはアプリケーションの負荷に対してJVMヒープ構成が小さすぎることを意味している場合があります。ヒープ構成が適正な場合は、リアルタイムのヒープ・データを確認する必要があります。次に、スナップショットを作成して、リークがないか検査することができます。詳細は、「ヒープ・スナップショットの取得」を参照してください。

  4. 「メトリック・パレットの表示」ボタンをクリックします。メトリック・パレットには、現在のターゲット(JVM)および関連するターゲット用のフォルダが用意されています。メトリック・グラフは追加または削除が可能です。リーフ・ノードはチェック・ボックスとして機能します。リーフ・ノードをクリックして選択すると、グラフが追加されます。リーフ・ノードをクリックして選択を解除すると、メトリックが削除されます。リーフ・ノードをパレットからグラフまたは凡例にドラッグすると、そのグラフにメトリックが追加されます。

ノート:

「エージェント診断チャート」(RAWデータ)、「JVMおよびホストの状態」(RAWデータ)、「JVMヒープ・メモリー使用量」(RAWデータ)、および「スレッド(アクティブ)の状態」(RAWデータ)のメトリック・グループは、JAVA仮想マシン・プールから非推奨になっています。

JVMのライブ・スレッド分析ページの表示

このページには選択したJVMのリアルタイム・データが表示されます。このデータは、JVMの様々なアクティブおよびアイドル状態のスレッド分析に役立ちます。分析では、スレッド・レベルからスレッドで使用されたメソッドに、そしてメソッドに含まれているローカル変数にドリルダウンできます。このページを表示するには:

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。
  2. ページの上部にある「ライブ・スレッド分析」リンクをクリックするか、「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診断のページからデータベース診断のページにドリルダウンすることはできません。

データベースを登録するには:

  1. 「設定」メニューで「ミドルウェア管理」を選択して、「設定」を選択します。RUEI/JVMDエンジン表の「JVM診断エンジン」行を選択して、「構成」をクリックします。

  2. 「データベースの登録」タブをクリックします。登録済データベースのリストが表示されます。データベース名、ホスト、モニター対象データベースのOracle SIDおよびリスナー・ポート番号が表示されます。「JVMDサポートDB」を示す列も表示されます。この列の値が「はい」の場合は、多層間の分析に進むことができます。この列の値が「使用不可」の場合は、データベースへのJDBC接続を確立できないため、多層間の分析は実行できません。

    ノート:

    データベースをJVMDに登録した後でも多層間の相互関係が確立されない場合は、データベースを選択して「DB URLの管理」をクリックします。「登録されたデータベースの関連付け/関連付け解除」フィールドで、データベースURLを選択して「追加」をクリックし、関連付けるデータベースのURLを指定します。登録済データベースにURLが関連付けられた後で、JVM診断エンジンは、JVMターゲットと基礎となるデータベース間の層間JVMコールのモニタリングを開始します。

ライブ・スレッドについて、多層間の相互関係を表示するには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「ライブ・スレッド分析」オプションを選択します。

  2. 「JVMスレッド」列で、DB待機状態のスレッドを選択します。

  3. 「スレッド情報」セクションにスレッドの詳細が表示されます。多層間の相互関係が確立されている場合は、「状態」フィールドにカーソルをかざすと、SID=<value>"SERIALNUM=<value>を確認できます。「DB待機」リンクをクリックして、データベース診断のページに移動します。

    ノート:

    多層が確立されていない場合は、「データベースの詳細」ポップアップが開き、ターゲット・データベースのホスト、ポート、SID、ユーザーおよびJDBC URLが表示されます。これは、データベースがJVMDに登録されていない場合、またはJVMDが、データベースのJDBC URLに対応する登録済データベースを見つけられない場合に発生します。データベースを登録するには、「データベースの登録」ページを表示するには、ここをクリックしてくださいのリンクをクリックすると、「データベースの登録」タブが表示されます。データベースがすでに登録されている場合は、登録されたデータベースを上記のデータベースURLに関連付けるには、ここをクリックしてくださいのリンクをクリックして、JDBC URLを登録済データベースに関連付けます。ポップアップが開き、データベースのJDBC URLを登録済データベースに関連付けることができます。

モニター対象の履歴データについて、多層間の相互関係を表示するには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「JVMパフォーマンス診断」オプションを選択します。
  2. 多層間に関連する「上位データベース」、「上位SQL」および「上位DBWaitイベント」の3つの表が表示されます。「上位データベース」の表には、プール内のJVM (1つまたは複数)がアクティビティを作成した上位のデータベースが表示されます。「上位DBWaitイベント」の表には、データベース内のJVMスレッドに起因する上位のDB待機イベントが表示されます。「上位SQL」表は、サンプル数でソートされたSQLのリストを示しています。

    SQLが実行された登録済データベースのリストを表示するには、「上位SQL」のSQLをクリックします。「定義されていません」は、JVMDに登録されていないデータベースに対して実行されたSQLを表します。「上位データベース」のデータベースをクリックすると、データベース名へのリンクを示すポップアップが開きます。それをクリックすると、データベース診断のページに移動します。データベース名が「未定義」の場合、ポップアップには、登録されていなかったデータベースの異なるJDBC URLと各データベースの対応するサンプル数が表示されます。また、多層が確立されなかった理由も示されます。

  3. データベース名のリンクをクリックすると、データベース診断ページにドリルダウンし、対応するデータベース・アクティビティが表示されます。
  4. 「上位SQL」「上位DBWaitイベント」のリンクをクリックすると、データベース診断の「SQLの詳細」ページおよび「ASHビューア」ページに移動します。

    多層間の相互関係が確立されている場合は、データベースのJVM診断アクティビティを表示できます(データベース診断からJVM診断へドリルアップ)。「パフォーマンス」ページの「JVM診断」リンクをクリックすると、「JVMパフォーマンス診断」ページにドリルアップします。時間間隔、データベースおよびその他のフィルタに関連するデータが表示されます。

Oracle RACデータベースでの多層間の相互関係の確立

Oracle Real Application Cluster(Oracle RAC)データベースは、データベース・インスタンスおよびリスナーの構成が複雑です。ユーザー・アプリケーションでは、単一インスタンスのデータベースで使用するSIDのかわりに、Oracle RACサービスを使用してデータベースに接続します。ユーザー・アプリケーションは、実際のデータベース・インスタンスとは別のマシンをリスニングしているOracle RACリスナーに接続できます。多層間の相互関係が確立されるためには、すべてのリスナーおよびデータベース・インスタンスがEnterprise Managerの検出済ターゲットである必要があります。次のオプションのいずれかを使用して、多層間の相互関係を確立できます。

  1. クラスタ(RAC)・データベースがEMで検出され、JVMDと多層間の相互関係を確立する場合、クラスタ・データベースターゲット・タイプを追加できます。次の図を参照してください。

    ノート:

    クラスタの一部であるデータベース・インスタンスを選択しないでください。たとえば、次の図では、racdbはクラスタ・データベースであり、racdb_racdb1およびracdb_racdb2はクラスタracdbの一部です。したがって、Weblogicデータ・ソースでクラスタ・データベースを使用している場合、クラスタ・データベースを追加することを検討する必要があります。JVMDでは、自動的に関連付けられたデータベース・インスタンスが取得されます。

    Figure 17-1 クラスタ・データベースの追加


    クラスタの追加
    前述の図では、クラスタ・データベースracdbが追加されており、次の図では、racdb_racdb1racdb_racdb2の両方のインスタンスが登録済データベースに追加されています。

    図17-2 クラスタ・データベースの登録後


    登録後

    クラスタの一部であるデータベース・インスタンスのみを追加する場合、これを行うことはできますが、SQL実行リクエストが別のdbインスタンスを介していると、マッピングの一部が失われることがあります。そのため、EMにクラスタ・データベースが検出された場合で、多層間マッピングの範囲が広い場合、これを直接追加することをお薦めします。

  2. Oracle RACのすべてのデータベース・インスタンスがEnterprise Managerで検出されていない場合は、次の手順を実行します。
    • データベース・インスタンスをRAC DBの各インスタンスのSIDを使用してカスタム・データベースとしてJVM診断に登録し、(構成済データ・ソースを介したアプリケーションへの接続に使用される) JDBC URLを「DB URLの管理」に追加します。

      図17-3 データベースURLの管理


      データベースの管理

      次に例を示します。

      RAC DB interface: host_rac, port:1521, ServiceName:S121、次のように構成された3つのdbインスタンスを含んでいます。

      DB1--> hos1 SID:S1212 Port:1521

      DB2--> host2 SID:S1211 Port:1521

      DB3--> host3 SID:S1213 Port:1521

      また、データ・ソースがjdbc:oracle:thin:@//host_rac:1521/S121として構成されています。さらに上のシナリオで、3つのカスタムDBをそのSIDを使用して追加し、各カスタムDBについてデータ・ソースに構成したJDBC URLを「DB URLの管理」で追加する必要があります。

メモリー診断の表示

このページには、現在のメモリー・プールの使用量の詳細およびガベージ・コレクションの統計が表示されます。また、クラス・ロードおよびクラス・コンパイルに関する統計も表示され、ライブ・ヒストグラムの取得と保存、およびすべてのヒストグラムの表示の方法も表示されます。

リポジトリにロードされたJVMヒープのリアルタイム分析を実行するには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、JVMターゲットをクリックします。
  2. 「Java仮想マシン」メニューから、「メモリー診断」を選択します。
  3. 以下のタブを使用することができます。
    • ヒープ・メモリー使用率

      これらのグラフでは、Javaメモリー・プールの使用量について説明します。

      • JVMヒープ・メモリー使用量

        「サンバースト」グラフには、Javaヒープ構造およびサイズが表示されます。サンバーストの中央の「ヒープ」ノードは、JVMプロセスのヒープ・メモリーを表します。「ヒープ」ノードの上にマウスを置くと、ヒープのサイズ(MB)が表示されます。これらのノードの周囲は、JVMヒープ・メモリーの一部である他のメモリー・プールです。任意のプール・ノードをダブルクリックすると、サンバーストとそのプール・ノードが展開されますが、これは、グラフの中央とその子の「使用量」と「空き領域」が表示されるためです。

        HotSpot JVMの場合、ヒープ・ノードにはEden領域、Survivor領域、Old Gen (世代)の3つの子が存在します。これらのノードの上にマウスを置くと、それらのサイズが表示されます。

        棒グラフには、すべてのメモリー・プール(ヒープおよびヒープ以外)の使用率が表示されます。プール使用率が75%未満の場合、棒の色は緑色になります。プール使用率が75% - 95%の場合、棒の色は黄色になります。プール使用率が95%以上の場合、棒の色は赤色になります。

      • 殿堂入り分布情報

        殿堂入りとは、マイナー・コレクションの数を経て存続したJVMオブジェクトの存続時間です。たとえば、殿堂入りサイズが2のオブジェクトは、これらのオブジェクトが2回のマイナー・コレクションを経て存続したことを表します。

        表示される統計は、JVMのバージョンおよびガベージ・コレクションの構成によって異なります。

      • スレッド・ローカル割当てバッファ(TLAB)統計

        このリージョンには、JVMパフォーマンス・カウンタに関連するスレッド・ローカル割当てバッファ(TLAB)統計が表示されます。

        Eden領域のポインタ競合を回避するために、オブジェクトの割当て中に、オブジェクト割当てが実行されるプライベート・メモリー領域が各スレッドに割り当てられます。このプライベート・メモリー領域をTLABと呼びます。

      • JVMメトリック

        このリージョンには、JVMヒープに関連する様々なメトリック・グラフ(パーセンテージまたは値)が表示されます。JVMからのモニタリング・データは、相関グラフの準備に使用されます。

        時間セレクタを使用して、グラフの目的の期間を選択します。デフォルトでは、グラフの期間は15分です。

        表形式の情報を表示するには、「表ビュー」をクリックします。

      ノート:

      最適化レベルで実行されているJVMの場合は、次の詳細が表示されます。

      • JVMヒープ・メモリー使用量の表(様々なヒープ領域の使用量(KB)を表示)

      • オブジェクトのJVMヒープ番号の表(様々なヒープ領域のオブジェクト番号を表示)

    • ガベージ・コレクション

      これらのグラフおよび表では、ガベージ・コレクション(GC)に追加されたオブジェクトの数がレポートされます。ガベージ・コレクションのタイプ(マイナーまたはメジャー)、および特定のタイプのガベージ・コレクションの数が表示されます。

      • 前回のガベージ・コレクションの情報

        「前回のガベージ・コレクションの情報」リージョンには、前回のコレクションの開始時間、終了時間、期間、ガベージ・コレクタ名、現在のガベージ・コレクション数、ガベージ・コレクション・スレッドの数など、JVMで発生した前回のメジャーおよびマイナー・ガベージ・コレクションに関する情報が表示されます。JVMによって提供されている場合、このタブには、ガベージ・コレクションの原因も表示されます。

        また、ガベージ・コレクション後のプール使用率の変化を表示する棒グラフも含まれます。

      • ガベージ・コレクション

        「ガベージ・コレクション」リージョンには、コレクションの合計数、GC休止時間の合計(ミリ秒)、コレクション率(1分当たりの起動)、GCオーバーヘッドの割合など、メジャーおよびマイナー・コレクションの累積統計が表示されます。

      • JVMメトリック

        このリージョンには、ガベージ・コレクションに関連する様々なメトリック・グラフ(パーセンテージまたは値)が表示されます。JVMからのモニタリング・データは、相関グラフの準備に使用されます。

        時間セレクタを使用して、グラフの目的の期間を選択します。デフォルトでは、グラフの期間は15分です。

        表形式の情報を表示するには、「表ビュー」をクリックします。

    • クラス・ロード・データ

      このタブには、クラス・ロードおよびクラス。コンパイルに関連するデータが表示されます。

      • クラス・ロード統計

        このリージョンには、ロードされたクラスの合計数、アップロードされたクラスの合計数、およびJVMの起動後のクラス・ロード時間の合計(ミリ秒)が表示されます。また、実行されたコンパイル(ジャストインタイム(JIT) + スタック上置換(OSR))の合計およびJVMの起動後の合計コンパイル時間(ミリ秒)も表示されます。最後に、ファイナライズを保留中のオブジェクトの数も表示されます。

      • JVMメトリック

        このリージョンには、クラス・ロードおよびコンパイルに関連する様々なメトリック・グラフが表示されます。JVMからのモニタリング・データは、相関グラフの準備に使用されます。

        時間セレクタを使用して、グラフの目的の期間を選択します。デフォルトでは、グラフの期間は15分です。

        表形式の情報を表示するには、「表ビュー」をクリックします。

    • クラス・ヒストグラム

      このタブを使用して、ライブ・ヒストグラムの生成、保存、および保存されているすべてのヒストグラムの表示を行います。「ライブ・ヒストグラムの取得」をクリックすると、JVMヒープがトラバースされ、クラス名、インスタンス数、合計サイズおよび平均サイズを含むヒストグラムが生成されます。ヒストグラムを調査して、インスタンスがメモリーを最も多く消費しているクラスを確認できます。

      「JVMクラスの詳細」表には、ヒープ内の異なるオブジェクト・タイプ別にヒープ使用量のサマリーが表示されます。

      • クラス名: JVMヒープ内の領域の名前。

      • インスタンス: ヒープ領域内のクラスのインスタンスのヒープ・オブジェクト数。

      • 合計サイズ(KB): JVMヒープのサイズ。

      • 平均サイズ(KB):

      • ライブ・ヒストグラムの取得

        このオプションをクリックすると、ヒストグラムが生成されます。

      • スケジュール

        スケジュールをクリックし、ジョブをスケジュールしてJVMクラス・ヒストグラム・データをリポジトリに追加します。スケジュールは、「即時」または「後で」として指定できます。「後で」を選択すると、ジョブを1回のみ実行するか、指定した間隔で繰り返すかを指定できます。

      • 保存されたヒストグラムを表示

        このオプションをクリックして、保存されたヒストグラムを使用可能なヒープ・スナップショット・ページに表示します

  4. 任意のタブから次を実行できます。
    • ヒープ・スナップショットの取得

      「ヒープ・スナップショットの取得」をクリックして、ヒープ・スナップショットを取得します。

    • エクスポート

      「エクスポート」をクリックして、Excelファイルにライブ・ヒープ・データをエクスポートします。

    • 保存

      「保存」をクリックして、JVMクラス表のクラスをリポジトリに保存します。「クラス・ヒストグラムの保存」ポップアップが表示されます。スナップショットの名前および説明を入力して「OK」をクリックします。

クラス・ヒストグラムの操作

jamagentの最適化レベルが0のときにクラス・ヒストグラムが表示されます。ヒストグラムにはサイズでソートした上位300行のデータが表示されます。クラス・ヒストグラムに対して様々な操作を実行できます。ここでは、以下の項目について説明します。

クラス・ヒストグラムの保存

クラス・ヒストグラムを保存するには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「メモリー診断」オプションを選択します。
  2. 「メモリー診断」ページで「クラス・ヒストグラム」タブをクリックします。「ライブ・ヒストグラムの取得」をクリックして、クラス・ヒストグラム・データを取得します。「保存」をクリックします。
  3. 「クラス・ヒストグラムの保存」ウィンドウでスナップショットの名前と説明を入力し、「OK」をクリックします。
保存済ヒストグラムの表示

保存済ヒストグラムを表示するには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「メモリー診断」オプションを選択します。
  2. 「メモリー診断」ページで「クラス・ヒストグラム」タブをクリックします。「保存されたヒストグラムを表示」をクリックします。「使用可能なヒープ・スナップショット」ページが表示されます。
  3. 「使用可能なクラス・ヒストグラム」表まで下にスクロールし、保存されたクラス・ヒストグラムのリストを表示します。
ヒストグラム・ジョブのスケジューリング

スケジューリングを行うことにより、ユーザーは定義した時刻にジョブを実行することで、JVMクラス・ヒストグラム・データをリポジトリに挿入できます。クラス・ヒストグラム・ジョブをスケジュールするには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「メモリー診断」オプションを選択します。
  2. 「メモリー診断」ページで「クラス・ヒストグラム」タブをクリックします。「スケジュール」をクリックします。「スケジュール設定」ページが表示されます。
  3. スケジュールするジョブの名前と説明を入力します。
  4. スケジュールを、「即時」または「後で」に指定します。「後で」を選択すると、ジョブを1回のみ実行するか、指定した間隔で繰り返すかを指定できます。
  5. ジョブを繰り返す頻度を「繰返し」ドロップダウン・リストから選択します。
  6. 「猶予期間」に対するオプションを選択します。猶予期間を選択すると、ジョブは指定した猶予期間の間アクティブのままで実行されます。
  7. 「OK」をクリックしてヒストグラム・ジョブをスケジュールします。ジョブが正常に発行されたことを示す確認ウィンドウが表示されます。

    ジョブのステータスを表示するには、「エンタープライズ」メニューから「ジョブ」「アクティビティ」の順に選択します。「ジョブ・タイプ」に「すべて」を選択し、「ターゲット・タイプ」に「ターゲットなし」を選択すると、ヒストグラム・ジョブが表示されます。

クラス・ヒストグラムの比較

この比較機能により、ユーザーは表にリストされた2つのクラス・ヒストグラムのスナップショットを比較できます。クラス・ヒストグラムを比較するには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「メモリー診断」オプションを選択します。
  2. 「メモリー診断」ページで「クラス・ヒストグラム」タブをクリックします。「保存されたヒストグラムを表示」をクリックします。「使用可能なヒープ・スナップショット」ページが表示されます。
  3. 「使用可能なクラス・ヒストグラム」表まで下にスクロールし、保存されたクラス・ヒストグラムのリストを表示します。任意の2つのクラス・ヒストグラムを選択して「比較」をクリックします。「クラス・ヒストグラムの比較」ページが表示されます。クラス名、インスタンス・サイズ(各スナップショットのサイズ)およびインスタンス数(スナップショットごと)が表示されます。
クラス・ヒストグラムの削除

クラス・ヒストグラムを削除するには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「メモリー診断」オプションを選択します。
  2. 「メモリー診断」ページで「クラス・ヒストグラム」タブをクリックします。「保存されたヒストグラムを表示」をクリックします。「使用可能なヒープ・スナップショット」ページが表示されます。
  3. 「使用可能なクラス・ヒストグラム」表まで下にスクロールし、保存されたクラス・ヒストグラムのリストを表示します。削除するクラス・ヒストグラムを選択して「削除」をクリックします。確認メッセージが表示されます。「OK」をクリックして、クラス・ヒストグラムを削除します。

ヒープ・スナップショットの取得

ヒープのスナップショットは、JVMメモリーのスナップショットです。JVM内のすべてのオブジェクトのビューが、これらのオブジェクト間の参照とともに表示されます。メモリー使用状況のパターンの調査や、メモリー・リーク発生の可能性があるかどうかの検出に使用できます。ヒープ・スナップショットを取得するには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、JVMターゲットをクリックします。JVMホームページが表示されます。
  2. 「Java仮想マシン」メニューから「メモリー診断」を選択して、「ヒープ・メモリー使用率」をクリックします。
  3. 「ヒープ・スナップショットの取得」をクリックします。「ヒープ・スナップショットのロード」ページが表示されます。
  4. 「ヒープ・スナップショットのロード」ページが表示されます。ヒープ・スナップショット形式および分析オプションリージョンで、次を指定します:
    • ヒープ・スナップショット・タイプ: ヒープ・ダンプ・ファイル形式を選択します。これには次のものがあります:

      • JVMD形式(txt)

      • HPROF形式(バイナリ)

        このオプションを選択してヒープ・スナップショットを取得し、loadheapスクリプトを使用してそれを手動でリポジトリにロードします。

    • ヒープ・スナップショットを取得する前にGCをリクエストしますか。: スナップショットの取得前に、未使用のオブジェクトを削除するには、このチェック・ボックスを選択します。

    • ヒープ分析オプション: ドロップダウン・メニューから必要なオプションを選択します。

      • ヒープ・データのリポジトリへのロード: このオプションを選択すると、ヒープ・スナップショットが取得され、リポジトリに自動的にロードされます。このオプションを選択する場合は、次の前提条件が満たされていることを確認する必要があります。「ヒープ・スナップショットの取得およびリポジトリへのロード」を参照してください。

      • メモリー・リーク・レポート: このオプションを選択すると、メモリー・リーク・レポートが生成されます。メモリー・リーク・レポートタブには、ヒープ・グラフで頻度の高いパターンを識別し、可能性の高いメモリー・リーク原因を示します。

      • アンチパターン・レポート: このオプションを選択すると、アンチパターン・レポートが生成されます。このレポートでは、逆パターンの問題のサマリーまたはその一種を示します。このオプションは、「ヒープ・スナップショット・タイプ」がHPROF (バイナリ)の場合のみ使用できます。

      ノート:

      ヒープ・ダンプのみを実行する場合は、このフィールドを空のままにします。

      ヒープ・スナップショットを取得し、それを手動でリポジトリにロードするには、「ヒープ・スナップショット・タイプ」を選択し、「ヒープ分析オプション」フィールドを空白のままにします。

    • ヒープ・スナップショットの時間: ヒープ・スナップショットをすぐに実行するようにスケジュールするか、後で実行するようにスケジュールします。

  5. 「発行」をクリックします。表示されるダイアログ・ボックスで、「はい」をクリックして、ヒープ・スナップショット・ジョブを続行します。ヒープ・スナップショット・ジョブの進行状況をモニターできます。ヒープ・スナップショットが生成され、それを保存するファイル名が表示されます。ヒープ・スナップショットをアップロードし、「ヒープ・スナップショット」メニューから適切なオプションを使用してそれを分析します。

ヒープ・スナップショットの取得およびリポジトリへのロード

ヒープ・スナップショットを取得してリポジトリに自動的にロードするには、このオプションを選択します。

前提条件

  • 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ファイルに含まれています。

ヒープ・スナップショットを取得してリポジトリにロードするには、次のステップを実行します。

  1. 「ヒープ・スナップショットとリポジトリへのロード」オプションを選択します。管理エージェントがJVM診断エージェントおよびヒープ・ローダー・ホスト上で実行されている場合は、このオプションを選択できます。
  2. ヒープ・スナップショットを即時に取得するか、後日取得するかを指定します。
  3. JVM診断エージェントが実行されているホストの資格証明を指定します。
  4. ヒープ・ローダー・ホストが構成されていない場合は、「追加」をクリックします。ホストの別名を入力し、管理エージェントが実行されているホスト(ヒープ分析ホスト)を選択します。「保存」をクリックします。
  5. ヒープ・ローダー・ホストがすでに構成されている場合は、利用可能なヒープ・ローダーが表示されます。リストからヒープ・ローダーを選択し、ヒープ・ローダー・ホストの資格証明を入力します。

    ノート:

    • JVMターゲットとヒープ・ローダー・ホストの優先資格証明が設定されている場合は、「資格証明を入力」リージョンは表示されません。

    • JVM診断DBユーザーの名前付き資格証明が設定されている場合は、「資格証明を入力」リージョンは表示されません。

  6. 「発行」をクリックしてヒープ・スナップショット・ジョブを発行します。確認メッセージが表示されます。「はい」をクリックして続行します。ジョブの詳細がヒープ分析ジョブページに表示されます。リンクをクリックして、ジョブ・ステータスを表示します。

ヒープ・スナップショットの分析

JVM診断メモリー分析機能では、メモリー増加に関与しているオブジェクトを見つけるだけでなく、ルートセットからの使用可能性を追跡することもできます。この機能では、メモリー・リークに関与するぶらさがり参照を見つけることができます。メモリー・リークを検出するために、一定期間内の別々の時点におけるJVMヒープのスナップショットを取得します。スナップショット間で、JVMとJavaアプリケーションはオーバーヘッドのない最高速で実行を続行します。

ヒープのスナップショットは、JVMメモリーのスナップショットです。各スナップショットには、ヒープ内のオブジェクト、オブジェクト間の関係およびルートセットの到達可能性に関する情報が保存されます。スナップショットをリポジトリにロードし、それらを比較してメモリーの増加が発生している場所を確認できます。「JVMプール」またはJVMのホーム・ページのメニューから「ヒープ・スナップショットおよびクラス・ヒストグラム」オプションを選択します。次のページが表示されます。

このページには、次のリージョンがあります。

  • 使用可能なヒープ・スナップショット: 「ターゲット名」および「ターゲット・タイプ」を指定して、表示するヒープ・スナップショットをフィルタリングします。また、「スナップ名」フィールドで「ヒープID」を指定し、特定のヒープ・スナップショットを検索し、それを表示できます。次の詳細が表示されます。

    • ヒープID: ヒープ・スナップショットの識別番号。

    • 日付: ヒープ・スナップショットを取得した日付。

    • JVM名: JVMを実行しているサーバー。

    • ベンダー: JVMベンダーの名前。

    • サイズ: Javaヒープの合計サイズ。適切なヒープ・サイズを使用すると、アプリケーションのパフォーマンスを向上させることができます。

    • 使用済: 使用済のヒープの量。

      ノート:

      ヒープ・スナップショットがHPROF形式で取得されると、「サイズ」と「使用量」のフィールドの値は0になります。

    • 使用率(%): ヒープの使用率。

    次の操作を実行できます。

    • 「作成」をクリックしてヒープ・スナップショットを取得します。「ヒープ・スナップショットの取得」を参照してください。

    • ヒープ・スナップショットを選択し、「詳細」リンクをクリックして、「ルート」ページにドリルダウンします。「ルート別ヒープ使用状況の表示」を参照してください。

    • ヒープ・スナップショットを選択して「ロード」をクリックすると、ヒープ・スナップショットをリポジトリにロードできます。「ヒープ・スナップショットのアップロード」を参照してください。

    • ヒープ・スナップショットを選択して「レポート」をクリックすると、ヒープ・レポートをローカル・ホストにダウンロードできます。これらのレポートは、選択したヒープ・スナップショットについて生成され、リポジトリにロードされています。メモリー・リーク・レポートおよび逆パターン・レポートをダウンロードできます。

  • 使用可能なクラス・ヒストグラム: 保存済のヒストグラムのリストが、スナップショットが取得された日付、スナップID、タイムスタンプ、JVMの名前とバージョン、説明などの詳細とともに表示されます。クラス・ヒストグラムの操作を参照してください。

ルート別のヒープ使用量の表示

ルートのクラスごとのヒープ使用状況を表示するには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、「Java仮想マシン」メニューまたは「Java仮想マシン・プール」メニューをクリックします。
  2. 「Java仮想マシン」ターゲット・メニューまたは「Java仮想マシン・プール」ターゲット・メニューから「ヒープ・スナップショットおよびクラス・ヒストグラム」を選択します。
  3. 使用可能なヒープ・スナップショットのリストが表示されます。ヒープ・スナップショットを選択し、「詳細」クリックして、各ルートから到達可能なオブジェクトの数とメモリーを表示します。ルートから直接到達可能なオブジェクトを表示するには、「ルート」タブをクリックします。次の詳細が表示されます。
    • ルート: ルートの名前がここに表示されます。上位40のオブジェクト・ページにドリルダウンするには、この名前をクリックします。

    • オブジェクト: このルートから到達可能なオブジェクトの合計数。

    • 合計メモリー: このルートから到達可能なメモリーの合計。

    • 調整済メモリー: このルートから到達可能な調整済メモリー。このパラメータは、メモリー・リークのホットスポットを追跡する際に役に立ちます。

  4. オブジェクトによるヒープ使用量を表示するには、「使用量」タブをクリックします。
  5. 「所有者のルート」タブをクリックして、このノードでガベージ・コレクションを実行すると削除されるすべてのオブジェクトの合計サイズを表示します。
  6. 「メモリー・リーク・レポート」タブをクリックして、メモリー・リーク・レポートを表示します。
  7. 「アンチパターン・レポート」タブをクリックして、アンチパターン・レポートを表示します。
上位40のオブジェクト

このページには、ルートから到達可能な上位40のオブジェクトが表示されます。オブジェクトは、オブジェクトから到達可能な調整可能メモリー(2つのヒープを比較している場合は、到達可能な調整済メモリーの差異)によって降順にソートされます。このビューには、オブジェクトの使用メモリー容量、オブジェクトから到達可能なメモリーの容量(すべての子のメモリー総使用容量)、指定オブジェクトから到達可能なオブジェクトの数など、様々な詳細情報が表示されます。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、JVMターゲットまたはJVMプール・ターゲットをクリックします。
  2. JVMまたはJVMプール・ホームページで、「Java仮想マシン」/「Java仮想マシン・プール」メニューから、「ヒープ・スナップショットおよびクラス・ヒストグラム」を選択します。
  3. 使用可能なヒープ・スナップショットのリストが表示されます。ヒープ・スナップショットを選択し、「詳細」クリックして、各ルートから到達可能なオブジェクトの数とメモリーを表示します。ルートから直接到達可能なオブジェクトを表示するには、「ルート」タブをクリックします。
  4. ルートをクリックして、上位40のオブジェクトを表示します。

次の詳細が表示されます。

  • シグネチャ: オブジェクトのシグネチャ。

  • ルート: ルートの内部識別子。

  • タイプ: 「クラス」、「インスタンス」、「メソッド」などのオブジェクト・タイプ。

  • フィールド:

  • スペース: オブジェクトが存在するヒープ領域。

  • バイト: オブジェクトによって使用される領域の量。

  • 長さ: オブジェクトが配列の場合、配列の長さがここに表示されます。

  • : オブジェクトから到達可能な子の数。

  • 調整(バイト): このオブジェクトから到達可能な調整済メモリー。

  • 保持メモリー: このノードでガベージ・コレクションを実行すると削除されるオブジェクトすべての合計サイズ。

  • 深さ: このオブジェクトのルートからの遠さを示します。

ヒープ・オブジェクト情報

このページには、ヒープ・スナップショット内の特定のオブジェクトに関する情報が表示されます。次の詳細が表示されます。

  • ヒープ・オブジェクト情報

    • ガベージ: このオブジェクトがガベージであるか、またはルートから到達可能であるかを示します。

    • スペース: オブジェクトが存在するヒープ領域。

    • タイプ: 「クラス」、「インスタンス」、「メソッド」などのオブジェクト・タイプ。

    • シグネチャ: オブジェクトのシグネチャ。

    • バイト: オブジェクトによって使用される領域の量。

    • 長さ: オブジェクトが配列の場合、配列の長さがここに表示されます。

    • 子: オブジェクトから到達可能な子の数。

    • 調整: このオブジェクトから到達可能な調整済メモリー。

    • 保持メモリー: このノードでガベージ・コレクションを実行すると削除されるオブジェクトすべての合計サイズ。

    • 深さ: このオブジェクトのルートからの遠さを示します。

  • ルート

    • タイプ: 「クラス」、「インスタンス」、「メソッド」などのルート・タイプ。

    • フィールド: ルートがローカル・スレッドの場合、スレッドおよびメソッドに関する情報がこのフィールドに表示されます。

  • オブジェクトの子

    • ガベージ: この子オブジェクトがガベージであるか、またはルートから到達可能であるかを示します。

    • スペース: 子オブジェクトが存在するヒープ領域。

    • タイプ: 「クラス」、「インスタンス」、「メソッド」などの子オブジェクトのタイプ。

    • シグネチャ: 子オブジェクトのシグネチャ。詳細ページにドリルダウンするには、リンクをクリックします。

    • バイト: 子オブジェクトによって使用される領域の量。

    • 長さ: 子オブジェクトが配列の場合、配列の長さがここに表示されます。

    • 子: 子オブジェクトから到達可能な子の数。

    • 調整: この子オブジェクトから到達可能な調整済メモリー。

    • 保持メモリー: このノードでガベージ・コレクションを実行すると削除されるオブジェクトすべての合計サイズ。

    • 深さ: この子オブジェクトのルートからの遠さを示します。

  • オブジェクトの親

    • ガベージ: この親オブジェクトがガベージであるか、またはルートから到達可能であるかを示します。

    • スペース: 親オブジェクトが存在するヒープ領域。

    • タイプ: 「クラス」、「インスタンス」、「メソッド」などの親オブジェクトのタイプ。

    • シグネチャ: 親オブジェクトのシグネチャ。詳細ページにドリルダウンするには、リンクをクリックします。

    • バイト: 親オブジェクトによって使用される領域の量。

    • 長さ: 親オブジェクトが配列の場合、配列の長さがここに表示されます。

    • 子: 親オブジェクトから到達可能な子の数。

    • 調整: この親オブジェクトから到達可能な調整済メモリー。

    • 保持メモリー: このノードでガベージ・コレクションを実行すると削除されるオブジェクトすべての合計サイズ。

    • 深さ: この親オブジェクトのルートからの遠さ。

ヒープ・スナップショットの比較

メモリー・リークを検出するために、一定期間内の別々の時点におけるJVMヒープのスナップショットを取得できます。各スナップショットには、ヒープ内のオブジェクト、オブジェクト間の関係およびルートセットの到達可能性に関する情報が保存されます。2つのヒープのスナップショットを比較して、メモリー増加の発生箇所を調べることができます。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、JVMターゲットまたはJVMプール・ターゲットをクリックします。
  2. 「Java仮想マシン」または「Java仮想マシン・プール」メニューから「ヒープ・スナップショットおよびクラス・ヒストグラム」を選択します。
  3. 使用可能なヒープのリストが表示されます。ヒープをハイライト表示して、「詳細」をクリックします。ヒープの比較タブをクリックします。リストの先頭のヒープが比較対象として選択され、2つ目のヒープを選択するように要求されます。
  4. 2つのヒープが比較され、差分ヒープ・ページに比較表が表示されます。各ヒープについて次の詳細が表示されます。
    • オブジェクト: ルートから到達可能なオブジェクトの合計数。

    • KB: ルートから到達可能なメモリーの合計量。

    • 調整: このルートから到達可能な調整済メモリー。このパラメータは、メモリー・リークのホットスポットを追跡する際に役に立ちます。このパラメータの場合、子オブジェクトからその親オブジェクトに対する後方参照を無視することにより、オブジェクトによって使用されるメモリーをより分かりやすく表示できます。

    • デルタ: 合計および調整済の到達可能なメモリーの差。

  5. 最も増加しているルートの設定をクリックして、メモリー・リークを診断します。
  6. サマリーの表示ボタンをクリックして、オブジェクトのクラスから到達可能なメモリーのボトムアップ・ビューを表示します。
オブジェクト別のヒープ使用量の表示

オブジェクト別のヒープ使用量を表示するには、「使用状況」タブをクリックします。次の詳細が表示されます。

  • オブジェクト・タイプ: 「インスタンス」、「配列」、「Klass」などのオブジェクトのタイプ。

  • ガベージ: このガベージがルートから到達可能かどうかを示します。

  • オブジェクト: オブジェクトの合計数。

  • 合計メモリー: ルートから到達可能なメモリーの合計量。

  • システム: システム詳細。

ヒープ・スナップショットを別のヒープ・スナップショットと比較するには、「比較対象」をクリックします。ヒープ・スナップショットの比較を参照してください。

メモリー・リーク・レポート

メモリー・リーク・レポートを表示するには、「メモリー・リーク・レポート」タブをクリックします。

メモリー・リーク・レポートは、ヒープ・グラフで頻度の高いパターンを検出することによって、考えられるメモリー・リークの原因を示します。このタブには、ヒープ内で最も頻度の高いパターンを含むメモリー・リークの候補のリストを示し、可能性の高いメモリー・リーク原因を示しています。「レポートのダウンロード」をクリックすると、メモリー・リーク・レポートが.txt形式でダウンロードされます。

アンチパターン・レポート

「アンチパターン・レポート」タブをクリックします。アンチパターン・レポートは複数のセクションに分割されます。各セクションには、逆パターンの問題のサマリーまたはその一種が表示されます。たとえば、最初のセクションには、JOverflowで検出された最も重大な問題のサマリーが含まれます。2番目のセクションには、JavaクラスおよびJavaオブジェクトの合計数が含まれます。また、クラス別にグループ化した、メモリー使用量が上位のオブジェクトのヒストグラムが含まれます。3番目のセクションには、上位メモリー・コンシューマの参照チェーンが表示されます。それぞれの逆パターンセクションでは、オーバーヘッドが計算され、これは問題が解決すれば節約できるメモリー量を示しています。

JFRスナップショットの管理

Javaフライト・レコーダ(JFR)は、JVM内の動作およびJVMで実行中のJavaプログラムについて豊富な情報を提供します。この情報を使用して、プロファイリングおよび問題の根本的原因を解析できます。さらに、稼働中の非常に負荷の高い本番環境でも、パフォーマンス・オーバーヘッドを発生させることなく、JFRをいつでも有効にできます。

スレッド・サンプル(プログラムが時間を費やす場所を表示します)、ロック・プロファイルおよびガベージ・コレクションの詳細が含まれるJFRスナップショットを作成できます。

JFRスナップショットを作成するには、次のステップに従います。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。
  2. 「Java仮想マシン」メニューから、「JFRスナップショット」オプションを選択します。
  3. 「作成」をクリックします。「JFRスナップショットの作成」ウィンドウで説明を入力し、スナップショットのスケジュールを設定し、「作成」をクリックします。新しく作成したスナップショットがJFRスナップショット・ページに表示されます。この表のフィールドは次のとおりです。
    • 日付: JFRスナップショットが作成された日付。

    • JVMターゲット: このJFRスナップショットに関連付けられているJVMターゲット。

    • JFRスナップショットの説明: JFRスナップショットの説明。

    • ホスト: 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のホーム・ページに戻ります。

JVMのグループへの追加

JVMを1つ以上のグループに追加するには、このオプションを選択します。ユーザーがオペレータ権限を持つポップアップ・ウィンドウが開き、グループのリストが表示されます。1つ以上のグループを選択し、「追加」をクリックすると、ターゲットがグループに追加されます。

スレッド・スナップショットの管理

特定のリクエストが遅くなっているか停止している場合、またはアプリケーション全体が遅くなっている場合は、トランザクションのリアルタイム・トレースを実行して、Javaアプリケーションの現在のアクティビティを確認できます。問題が発生しているスレッドとその実行スタックを調査し、スレッドがDB待機状態になっている時間、またはロックにより待機状態になっている時間を分析できます。あるスレッド(またはリクエスト)のアクティビティが他のスレッドのアクティビティや残りのJVMに影響する場合などの複雑な問題を、迅速に発見することができます。

すべてのアクティブ・スレッドをトレースし、リソースの使用状況、スレッドの状態、コール・スタックの情報などの詳細が含まれるトレース・ファイルを生成できます。トレース中に、ターゲット・スレッドの状態およびスタックが、目的の期間に対して設定した間隔でサンプリングされます。アクティブ・スレッドをトレースするには、次のステップを実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットを選択します。
  2. 「Java仮想マシン」メニューから「スレッド・スナップショット」オプションを選択します。スレッド・スナップショット・ページが表示されます。

    「アクティブ・スレッドのトレース」オプションを使用してリポジトリにロードされているすべてのトレースが、ここに表示されます。各スレッドについて、スレッド・スナップショットID、日付、JVM名、スレッド名、期間およびトレース中に取得されたサンプル数が表示されます。「スレッド」列には、すべてのスレッドをトレースしたかアクティブなスレッドのみをトレースしたかが示されます。

  3. 「作成」をクリックして、JVMのすべてのアクティブ・スレッドのスレッド・スナップショットを取得します。アクティブ・スレッドをトレースできる「すべてのアクティブなスレッドのスレッド・スナップショット」ページが表示されます。詳細は、「アクティブ・スレッドのトレース」を参照してください。
  4. スレッドを選択し、「詳細」リンクをクリックして、「診断イメージの分析」ページにドリルダウンします。
  5. スレッド・スナップショットを選択して「インポート」をクリックし、ローカル・マシンからスレッド・スナップショットをアップロードします。「スレッド・スナップショットのインポート」ダイアログ・ボックスが表示されます。「参照」をクリックしてインポート対象のスレッド・スナップショットを選択し、「OK」をクリックします。

アクティブ・スレッドのトレース

アクティブ・スレッドをトレースするには、次のステップを実行します。

  1. 「スレッド・スナップショット」ページで「作成」をクリックします。「すべてのアクティブなスレッドのスレッド・スナップショット」ページが表示されます。
  2. 次の詳細を指定します。
    • ポーリング間隔(ミリ秒): 連続するサンプル間の時間間隔。デフォルト値は200ミリ秒ですが、変更できます。

    • ポーリング継続時間(秒): スレッド・スナップショットの取得期間。

    • スレッドのトレースの詳細: このボックスを選択しない場合、アクティブ・スレッドの最後のユーザー・コールのみが保存されます。ボックスを選択すると、アクティブ・スレッドのすべてのコールが保存され、コール・スタックを表示できます。ボックスを選択すると、オーバーヘッドと必要な領域が増加します。

    • スレッドの変更の試行: サンプリング中にスレッド・スタックが変更された場合(これはスレッドがCPUを使用している場合に発生する可能性があります)、JVM診断はそのスレッドをサンプリング対象から外します。不足しているサンプルを見つけた場合、この機能を使用して変更されたスタックを再トレースします。スタックが変更されているスレッドが5回まで再試行されます。可能な場合、スタックを取得するシステム・コールも実行されます。

    • ネットワーク待機を含む: ほとんどのJVMには、ネットワーク・イベントを待機中のアイドル・スレッド数が多くあります。このチェック・ボックスの選択を解除したままにすると、アイドル・スレッドはトレースに含まれません。このボックスを選択すると、オーバーヘッドと必要な領域が増加します。

    • すべてのスレッドのトレース: アイドル・スレッドとアクティブ・スレッドの両方をトレースに含める場合は、このボックスを選択します。

    • トレースの中断の許可: トレース処理の中断を許可します。

  3. 「スレッド・スナップショットの取得」をクリックし、「OK」をクリックしてトレース・ファイルを生成します。トレースが正常に完了した場合は、ここのリンクをクリックして「診断イメージの分析」ページでトレース・データを表示します。

トレース診断イメージの分析

トレース診断イメージには、リソースの使用状況、スレッドの状態、コール・スタックの情報などの詳細が格納されます。トレース診断イメージでは、短い間隔でスレッド・データが取得されます。アプリケーションが停止しているか遅くなっている場合は、これらのスレッドを分析して、遅延の原因となっているアプリケーション層を調査できます。

診断イメージの分析ページでは、次の操作を実行できます。

  • 「説明」をクリックして、分析しているスレッド・スナップショットの詳細を表示します。次のサーバー状態グラフが表示されます。

    • 状態別のアクティブ・スレッド: このグラフは、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. 「ターゲット」メニューから、「ミドルウェア」を選択します。
  2. 「ミドルウェアの機能」メニューから、「診断スナップショット」オプションを選択します。

    「JVMパフォーマンス診断」ページには、「診断スナップショットの作成」オプションも用意されています。JVMの「パフォーマンス診断」ページに移動し、収集を作成する時間範囲を指定して、「診断スナップショットの作成」をクリックします。

  3. 診断スナップショットページで「作成」をクリックします。診断イメージの分析ページで「オフライン診断」をクリックすると、このページに移動できます。
  4. 診断スナップショットの名前と説明を入力します。
  5. 診断スナップショットの期間を指定します。
  6. 「追加」をクリックします。診断データを収集する1つ以上のJVMターゲットを選択します。

    ノート:

    選択するJVMターゲットは、同じJVMプールに属している必要があります。

  7. 選択したターゲットの診断タイプを選択し、「OK」をクリックします。診断スナップショットが作成されていることを示すポップアップ・ウィンドウが表示されます。診断スナップショットが作成されたら、「閉じる」をクリックします。診断スナップショット・ページに戻ります。

「診断スナップショット」ページの使用

1つ以上のJVMターゲットの診断データを収集し、それらをオフライン・モードで分析できます。このページには、作成された診断スナップショットのリストが表示されます。検索基準を指定して、特定のスナップショットを取得できます。次の操作を実行できます。

  • 作成: 「作成」をクリックして、1つ以上のJVMに対して診断スナップショットを作成します。診断スナップショットの作成ページが表示されます。

  • エクスポート: ファイルを選択して「エクスポート」をクリックし、診断データをファイルにエクスポートします。ファイルを保存する場所を入力します。保存されたファイルを同じまたは別のホスト・マシン上でオフライン・モードで確認、分析できます。

  • インポート: 「インポート」をクリックして、特定の収集オブジェクトに関する診断データが含まれているエクスポート・ファイルをインポートします。ファイル名を指定し、システムからファイルをアップロードします。エクスポートされたファイルを分析し、診断スナップショットのサマリーを表示できます。

  • 分析: ファイルを選択して「分析」をクリックします。診断スナップショットの分析ページが表示されます。

  • 削除: リストから診断スナップショットを選択して「削除」をクリックします。確認メッセージが表示されます。「OK」をクリックして診断スナップショットを削除します。

  • 表示: ファイルを選択して「表示」をクリックします。診断スナップショットの表示ページが表示されます。

診断スナップショットの分析

このページには、診断スナップショットのサマリー詳細と診断スナップショットのすべての診断タイプのサマリーが表示されます。スレッド・スタック、スレッド状態、CPU使用率、ヒープ使用量、アクティブ・スレッドのグラフおよびガベージ・コレクションを表示できます。

診断スナップショットを分析するには、次のステップを実行します。

  1. 「ターゲット」メニューから、「ミドルウェア」を選択します
  2. 「ミドルウェアの機能」メニューから、「診断スナップショットの管理」を選択します。
  3. 診断スナップショット・ページで、リストからスナップショットを選択し、「分析」をクリックします。
  4. 指定した時間間隔で各JVMの詳細を分析できます。「詳細」をクリックし、JVMの詳細な診断情報を表示します。診断イメージの分析ページが表示されます。

診断スナップショットの表示

このページには、ターゲットのサマリー、ターゲット・タイプおよび収集された診断情報が表示されます。

  1. 「ターゲット」メニューから、「ミドルウェア」を選択します
  2. 「ミドルウェアの機能」メニューから、「診断スナップショットの管理」を選択します。
  3. 診断スナップショット・ページで、リストからスナップショットを選択し、「表示」をクリックします。
  4. 選択したJVMターゲットのサマリー詳細、ターゲット・タイプおよび収集されたJVMの診断情報が表示されます。

JVM診断しきい値違反の表示

イベントは、1つ以上の管理対象エンティティに関連して、特定の時点でEnterprise Managerが検出した個々の事象です。通常の動作である場合も、問題のある動作を示す場合もあります。イベントの例としては、データベース・ターゲットの停止、パフォーマンスしきい値の違反、アプリケーション構成ファイルでの変更、ジョブの正常な完了、ジョブ失敗などがあります。

JVM診断しきい値違反は、Enterprise Managerのイベント・サブシステムに統合されています。しきい値違反が発生すると、Enterprise Managerイベントが生成されます。イベントを表示するには、次のステップを実行します。

  1. 「エンタープライズ」メニューから、「モニタリング」「インシデント・マネージャ」の順に選択します。
  2. 「表示」パネルで、「インシデントのないイベント」をクリックします。未処理のJVMDしきい値違反がある場合は、JVM診断イベントが表示されます。
  3. JVM診断イベントの「ターゲット名」列にあるリンクをクリックします。

    イベントがインシデントに昇格されている場合は、JVMまたはJVMプールのホームページのインシデント表にJVMDしきい値違反が表示されます。イベントをインシデントに昇格させる方法の詳細は、『Enterprise Manager Cloud Control管理者ガイド』を参照してください。

Java Workload Explorerの使用

Java Workload Explorerでは、JVMおよびJVMプール・ターゲットに関連付けられたすべてのパフォーマンス統計の詳細なビューが提供されます。

Java Workload Explorerへのアクセス

Java Workload Explorerを使用するには:

  1. 「ターゲット」メニューから、「ミドルウェア」を選択し、「Java仮想マシン」ターゲットまたは「Java仮想マシン・プール」ターゲットを選択します。

    このページには、「ターゲット」メニューから「ミドルウェア」を選択して、「ミドルウェアの機能」メニューを選択してもアクセスできます。Java Workload Explorerを選択します。

  2. 表示されるページで、ページの上部の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の管理およびトラブルシューティング・ページにアクセスするには、次の手順に従います。

  1. 「設定」メニューで「ミドルウェア管理」を選択して、「エンジンおよびエージェント」を選択します。
  2. RUEI/JVMDエンジン・セクションで、目的のJVM診断エンジンをハイライト表示し、「トラブルシュート」をクリックします。

    統計には、次の情報が含まれます:

    • リポジトリ統計

      表領域拡大率チャートには、特定の間隔にわたってリポジトリによって使用された「合計領域」および「使用済領域」が表示されます。関連するリポジトリ表がリストされます。特定のリポジトリ表の統計を表示するには、表の名前をハイライト表示し、「詳細」をクリックします。

      「傾向」ボタンをクリックして、それぞれの日に使用されたデータおよび割り当てられたデータを表示します。このデータはDBMS_SPACE.OBJECT_GROWTH_TREND関数で収集された統計に基づき、領域の使用状況の傾向を確認できます。

      「エクスポート」をクリックして、すべての表およびそれに関連する統計をリストする表を取得します。たとえば、「表に割り当てられた領域(MB)」、「索引に割り当てられた領域(MB)」、「行数」、「最終分析時間」です。ノート: 「エクスポート」をクリックする前に、すべての列を表示します(「表示」メニューで「列」を選択し、「すべて表示」を選択します)。こうすることで表の列が見やすくなります。

      JVMD操作統計リージョンに表示されるデータにより、JVMD管理者として独自のアプリケーションをモニターできます。

    • JVMDターゲット・サマリー

      このページには、JVMエージェントに関するデータが表示されます。

      「サマリー」セクションには、停止しているターゲットの数や関連付けられていないターゲットの数などのエージェント統計がリストされます。WebLogic ServerドメインにあるJVMDエージェントの管理、JVMターゲットのモニタリングの開始と停止およびデータのエクスポートを実行できます。

    • エンジン・サマリー

      このページには、JVMエンジンに関する統計が表示されます。エンジンをハイライト表示すると、関連付けられた属性がエンジン属性表に表示されます。エンジン・サマリーには、「パフォーマンス」、「診断」および「構成」の属性タイプが含まれます。

      また、ロード・バランサが構成されている場合は、「JVMDロード・バランサ」表にその他の情報が表示されます。

    診断のトラブルシューティング支援は次のとおりです。

    • JVMDヘルス・ジョブの表示

      このリンクによって、「ジョブ・システム」に直接ナビゲートされます。デフォルトではすべてのJVMDヘルス・ジョブが表示されます。

      JVMDHealthReportJobジョブは、3時間ごとに自動的に起動されます。このジョブは、その3時間の期間の統計を収集します。対象期間のジョブを選択し、「結果の表示」をクリックします。これはJVMDのヘルスの履歴ビューです。レポートの名前はJVMD_HEATH_REPORT_AUTOです。

    • SRアシスタンス

      JVMDに問題が存在する場合は、一般的なJVMDの問題に関する説明についてSRアシスタンス・ボタンをクリックします。このページには、サービス・リクエストを申請する前に使用可能にしておく必要のある統計もリストされます。

    • レポートの生成

      JVMDの管理およびトラブルシューティング・タブで使用できるのと同じ情報、つまり、様々なJVMDコンポーネントの傾向が表示されます。「ファイルに保存」をクリックして、後で簡単にアクセスできる.htmlファイルに情報を保存します。

JVMDの管理およびトラブルシューティング(特定のエージェント)

特定のJVMまたはJVMプールで速度が低下するか問題が発生した場合は、「JVMDの管理およびトラブルシューティング」機能によって提供される統計と診断が問題の解決に役立ちます。

JVMDの管理およびトラブルシューティング・ページにアクセスするには、次の手順に従います。

  1. 「ターゲット」メニューから、「ミドルウェア」を選択し、「Java仮想マシン」または「Java仮想マシン・プール」を選択します。
  2. 表示されるページで、「Java仮想マシン」または「Java仮想マシン・プール」メニューから「JVMDの管理およびトラブルシューティング」を選択します。

    「JVMDターゲット・サマリー」タブ

    統計には、次の情報が含まれます:

    • ステータスおよび接続

      データには、エンジン・ホストと可用性の他に、「JVMDエージェント・ステータス」、「モニタリング・ステータス」およびバイトコード・インスツルメンテーション(BCI)ステータスが含まれます。

    • ターゲットに関連するターゲット属性。属性には、「パフォーマンス」、「診断」および「構成」属性が含まれます。

      「MBeanブラウザ」ボタンをクリックすると、JVMDエージェントMBeanデータとJVMDエージェントに対するライブ・コールが表示されます。

      JVMDエージェントに関連する問題の診断で非常に役立つこのデータをエクスポートできます。

    • パフォーマンスと診断(「ポーリング間隔(ミリ秒)」、「レスポンス時間(ミリ秒)」、平均スタック深さ(カウント)、「アクティブなスレッドの数」)

    診断のトラブルシューティング支援は次のとおりです。

    • 「Java仮想マシン」メニュー

      パフォーマンス診断、スレッド・スナップショットおよび構成オプションへのリンクを提供します。

    • Javaワークロード・エクスプローラ

      JVMまたはJVMプールに関連付けられたすべてのパフォーマンス統計の詳細なビューを提供します。

    • ライブ・スレッド分析

      選択したプール内のすべてのJVMのリアルタイム・データまたは選択したJVMのリアル・タイム・データが表示されます。

    • SRアシスタンス

      JVMDに問題が存在する場合は、一般的なJVMDの問題に関する説明についてSRアシスタンス・ボタンをクリックします。このページには、サービス・リクエストを申請する前に使用可能にしておく必要のある統計もリストされます。

    • レポートの生成

      JVMDの管理およびトラブルシューティング・タブで使用できるのと同じ情報が表示されます。「ファイルに保存」をクリックして、後で簡単にアクセスできる.htmlファイルに情報を保存します。ジョブの目的は、様々なJVMDコンポーネントの傾向を示すことです。

    「アソシエーションの管理」タブ

    「ターゲット・アソシエーション」には、このJVMが関連付けられているEnterprise Managerターゲットがリストされます。ターゲットの関連付けと関連付けの解除、およびスプレッドシートへの情報のエクスポートを実行できます。

EMCLIの使用によるJVMターゲットのモニタリングの有効化または無効化

EMCLIを使用してJVMターゲットのモニタリングを有効化または無効化することもできます。

次のコマンドを実行して、JVMDターゲットをデプロイします。

emcli deploy_jvmd -domain_name="/Farm03_base_domain/base_domain" -enableMonit="false"