プライマリ・コンテンツに移動
Oracle® Enterprise Manager Cloud Control Oracle Fusion Middlewareマネージメント・ガイド
リリース12.1.0.8
B66835-11
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

21 JVM診断の使用方法

この章では、JVM診断を使用して実行できる各種のタスクについて説明します。この章の内容は次のとおりです。

21.1 JVM診断のインストール

JVM診断エンジンは、WebLogic ServerのEnterprise JavaBeans (EJB)テクノロジとして実行されます。JVM診断エージェントは、ターゲットJVM (本番環境のWebLogic Serverを実行するJVM)にデプロイされます。リアルタイムのデータを収集し、JVM診断エンジンに転送します。このデータはManagement Repositoryに格納され、収集された情報は監視のためにEnterprise Manager Cloud Controlコンソールに表示されます。JVM診断エンジンとJVM診断エージェント間の通信は、セキュア(SSL)または非セキュアhttp接続が可能です。

「アプリケーション・パフォーマンス管理」ページはGUIベースの画面で、ユーザーはJVM診断エンジンの状態を確実かつ効率的にデプロイ、監視できます。「アプリケーション・パフォーマンス管理」ページを使用すると、次の操作を実行できます。

  • JVM診断エンジンのデプロイ

  • すべてのJVM診断エンジンの可用性の監視

  • マネージャのデプロイ先のホストや現在の状態、実行中のポート、バージョンなど、JVM診断エンジンに関する情報へのアクセス

JVM診断のインストールの詳細は、『Oracle Enterprise Manager Cloud Control基本インストレーション・ガイド』を参照してください。

21.1.1 スタンドアロンJVMの監視

スタンドアロンJVMを監視する必要がある場合は、次の手順を実行してJVM診断エージェントを手動でデプロイできます。

  1. 「設定」メニューから、ミドルウェア管理「アプリケーション・パフォーマンス管理」の順に選択します。JVM診断エンジンが有効になっているかどうかを確認します。JVM診断エンジンは独立しており、すでに稼働中のCloud Control OMSサーバーと同じドメインのWLSターゲット内で実行されます。これは基本的に同じドメイン内にある別のWLSコンテナで、非常に軽量なため、Cloud Control OMSインスタンスと同じサーバー上でも正常に稼働できます。

  2. 「アプリケーション・パフォーマンス管理エンジン」表で「JVM診断エンジン」行を選択して、「構成」をクリックします。「JVM診断の設定」ページで「JVMおよびプール」タブ、「ダウンロード」の順にクリックして、jamagent.warファイルをダウンロードします。

  3. 次のように実行し、jamagent.warCLASSPATHに追加します。

    CLASSPATH=$CLASSPATH:/scratch/ssmith/jvmd/jamagent.war

    export CLASSPATH

  4. 次のように実行し、JVM診断エージェントを使用してJVM診断を開始します。

    $JAVA_HOME/bin/java -cp $CLASSPATH $JVM_OPT $SYS_OPT jamagent.jamrun [$JAMAGENT_PARAMS_LIST] $TARGET_CLASS $TARGET_CLASS_PARAMS

    各パラメータの意味は次のとおりです。

    • [$JAMAGENT_PARAMS_LIST]は、jamloglevel、jamconshost、jamconsport、jamconsretr、jamtimeoutなどの、JVM診断エージェントのパラメータを指します。


      注意:

      jamisdameonオプションは、スタンドアロンJVMモードのJVM診断エンジンでは常に有効になります。これにより、親とネイティブのJavaスレッドが、コマンドラインの指定に関係なく、デーモンとして動作します。

    • $TARGET_CLASSは、アプリケーションの実行可能(Main)クラスです。

    • $TARGET_CLASS_PARAMSは、実行可能(Main)クラスに渡されるプログラム引数です。

    これらのパラメータが指定されていない場合は、jamagent.warファイルから取得されます。

    次に例を示します。

    CLASSPATH="$CLASSPATH:/scratch/ssmith/jamagent.war"
    $JAVA_HOME/bin/java -cp $CLASSPATH $JVM_OPT $SYS_OPT jamagent.jamrun
    jamconshost=10.229.187.109 jamconsport=3800
    oracle.ad4j.groupidprop=MyJVMPool1/JVM50 mypackage.MyMainClass myarg1 myarg2
    

21.2 JVM診断の設定

JVM診断の設定と構成を行うには、次の手順を実行します。

  1. 「設定」メニューから、ミドルウェア管理「アプリケーション・パフォーマンス管理」の順に選択します。アプリケーション・パフォーマンス管理エンジンのリストが表示されます。すべての列を選択すると、「JVM診断エンジン」行に、次の詳細が表示されます。

    • 名前: JVM診断エンジンに割り当てられている名前。このIDによって、すべてのプロセスでJVM診断エンジンが識別されます。

    • タイプ: エンジンのタイプ(この場合はJVM診断エンジン)。

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

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

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

    • 可用性: JVM診断エンジンの可用性(%)。

    • ステータス: JVM診断エンジンのステータス(アクティブ/非アクティブ)。

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

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

    前述の列が表示されます。

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

21.2.1 JVM診断エンジンの構成

JVM診断エンジンを構成して、新しいアイドル・スレッド・ルールを作成したり、既存のルールを削除できます。

  1. 「JVMD構成」タブをクリックします。次のページが表示されます。

    図21-1 「JVMD構成」ページ

    「JVMD構成」ページ
  2. 「JVMDエンジン・パラメータ」リージョンで次の詳細を変更できます。

    • JVMDマネージャのログ・レベル: コンソール診断メッセージのログ・レベル。次の1から5のログ・レベルがサポートされています。

      • 1 = エラー

      • 2 = 警告

      • 3 = 情報

      • 4 = デバッグ

      • 5 = トレース

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

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

      • 1 = エラー

      • 2 = 警告

      • 3 = 情報

      • 4 = デバッグ

      • 5 = トレース

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

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

    • 監視集計間隔: 監視対象サンプルの詳細をサマリー・データに集計する頻度。

    • システム・サンプル間隔: 監視時にシステム詳細(累積CPUカウンタ、ヒープ・サイズおよびGC数)を収集する頻度。

    • (時間)より古い詳細データをパージ: 詳細な監視対象サンプルの保持期間。

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

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

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

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


      注意:

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

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

  3. 「スレッド・ルール」リージョンで、次の操作を定義できます。

    • アイドル・スレッド・ルール: アイドル・スレッド・ルールにスレッドを追加して、アイドルなスレッドとしてマークします。アイドルとしてマークされているスレッドはすべて監視されません。「新規ルール」をクリックすると、新規のアイドル・スレッド・ルールを作成できます。「アイドル・スレッド・ルールの追加」ウィンドウで、次の詳細を入力します。

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

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

        現在のコール: スタックの現在のコールとして指定されたクラスとメソッドの組合せを持つすべてのスレッドを無視する場合は、このタイプを選択します。スタックの現在のコールは、クラスとメソッドの組合せがシステム・コールではない、上部から下部へとトラバースするスタックの最初のフレームです。システム・コールは、java.*などユーザー・アプリケーションに関連しないコールであることが想定されます。ここでは、ワイルド・カードを指定できます。たとえば、weblogic.servlet.*と指定すると、この条件を満たすすべてのスレッドが無視されます。

        スレッド名: 指定したスレッド名を含んでいるすべてのスレッドを無視する場合に、このタイプを選択します。

      • ルールの値: 「現在のコール」の「ルールの値」には、完全修飾されたクラス名およびその後にメソッド名を指定する必要があります。「現在のコール」の例はweblogic.socket.PosixSocketMuxer->processSocketsです。「監視(ロック待機)」の例はweblogic.socket.PosiSocketMuxer$1です。

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

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

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

      このシステム・コール・ルールがすべてのJVMプール・ターゲットに適用される場合は、「グローバル・ルール」チェックボックスを選択します。このボックスがチェックされていない場合、このルールが適用される1つ以上のJVMプールを選択します。

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

21.2.2 JVMおよびプールの構成

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

  1. 「設定」メニューから、ミドルウェア管理「アプリケーション・パフォーマンス管理」の順に選択します。「アプリケーション・パフォーマンス管理エンジン」表で「JVM診断エンジン」行を選択して、「構成」をクリックします。

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

    図21-2 JVMおよびプールの構成

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

    1. JVMプール情報の追加ページで、JVMプールの名前と説明を入力します。

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

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

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

  4. プールを削除するには、選択チェック・ボックスを選択し、「削除」アイコンをクリックします。

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

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

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

    • MDAを使用したJVMDエージェント(WebLogicのみ): サポートされているプラットフォームのWeblogicサーバーのJVM診断およびMDAエージェントが含まれています。

    • DBエージェント: レガシー・データベース・バージョンのクロス層分析を確立するサポートされているプラットフォームの実行可能ファイルが含まれています。

    • JVMDエンジン: リアルタイム・ビュー用のJVM診断エージェントのJVMメトリックおよび履歴データを収集します。

  6. JVMプールを選択して「構成」をクリックします。詳細は、第21.4.4項「JVMプールの構成」を参照してください。

  7. JVMを選択して「構成」をクリックします。詳細は、第21.5.10項「JVMの構成」を参照してください。

21.2.3 データベースの登録

次の手順を実行して、データベースを登録します。

  1. 「設定」メニューから、ミドルウェア管理「アプリケーション・パフォーマンス管理」の順に選択します。「アプリケーション・パフォーマンス管理エンジン」表で「JVM診断エンジン」行を選択して、「構成」をクリックします。

  2. 「データベースの登録」タブをクリックします。「JVM診断登録済データベース」ページが表示されます。

    図21-3 データベースの登録

    データベースの登録
  3. 登録済データベースのリストが表示されます。データベース名、ホスト、監視対象データベースのOracle SIDおよびリスナー・ポート番号が表示されます。データベース・エージェントが必要かどうかを示すフラグも表示されます。

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

    • データベース・インスタンスの追加: 「追加」メニューから「データベース・インスタンス」を選択して、単一インスタンスまたはOracle RACのデータベース・ターゲットを登録します。

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

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

    • DB URLの管理: このオプションを使用して、JVM診断およびデータベース診断の間のクロス層相関を確立します。データベースを選択し、「DB 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


  5. データベースが登録された後、JVM診断エンジンは、特定のJVMについて監視されているアプリケーションと基礎となるデータベース間の層間JVMコールの監視を開始します。

  6. 「登録されているDBエージェント」リージョンに、次の詳細が表示されます。

    • エンジンID: このDBエージェントが接続しているマネージャのID。

    • DBエージェントID: DBエージェントに与えられた一意のID(すべてのプロセスでDBエージェントを識別するために使用)。

    • ホスト: DBエージェントが実行されているホスト。

    • CPU: CPUの数。

    • OSユーザー: DBエージェントを開始したユーザー。

    • ID: DBエージェントが実行されているポート(デフォルトは5555)。

    • ログ・レベル: DBエージェントのログ・レベル。

    • ステータス: DBエージェントのステータス(アクティブ/非アクティブ)。

  7. 「選択」チェック・ボックスを選択し、「編集」アイコンをクリックして、DBエージェントを編集します。

  8. 「ダウンロード」をクリックしてJVM診断エージェント、JVM診断エンジン、データベース・エージェント、ロード・ヒープなどの様々なバイナリを手動でダウンロードし、それらをデプロイします。次のものをダウンロードできます。

    • JVM診断エージェントのWARファイル: 「JVM診断エージェントWeb xmlパラメータ」ウィンドウが表示されます。「使用可能なマネージャ」ドロップダウンから、<host>:<port>という形式(通常の通信用)または<host>:<port>(セキュアな通信)という形式(SSLポートを介した通信用)のエントリを選択するか、「その他」を選択します。「その他」を選択する場合、JVM診断エージェントの接続先となるマネージャIPアドレスおよびマネージャ・ポートを指定する必要があります。JVM診断エージェントのダウンロード時に、次のパラメータを変更できます。

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

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

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

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

    • JVM診断エンジンEARファイル: jammanager.earファイルを開くか、このファイルを指定した場所に保存できます。

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

    • DBエージェント: DBエージェントのパラメータを指定します。「使用可能なエンジン」ドロップダウンから、<host>:<port>という形式(通常の通信用)または<host>:<port>(セキュアな通信)という形式(SSLポートを介した通信用)のエントリを選択するか、「その他」を選択します。「その他」を選択する場合、JVM診断エージェントの接続先となるマネージャIPアドレスおよびマネージャ・ポートを指定する必要があります。「ロギング・パラメータ」リージョンでエージェント・ログ・レベルを指定し、「ダウンロード」をクリックします。

21.2.4 ヒープ分析ホストの構成

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

  1. 「設定」メニューから、ミドルウェア管理「アプリケーション・パフォーマンス管理」の順に選択します。「アプリケーション・パフォーマンス管理エンジン」表で「JVM診断エンジン」行を選択して、「構成」をクリックします。

  2. 「ヒープ分析ホスト」タブをクリックします。「ヒープ分析ホストの構成」ページが表示されます。

    図21-4 ヒープ分析ホストの構成

    ヒープ・ローダーの構成
  3. 「ダウンロード」をクリックし、「Loadheap」を選択して、loadheap.zipファイルをダウンロードします。このファイルには、ヒープ・スナップショットをJVM診断リポジトリにアップロードするために使用できるスクリプトが含まれています。

  4. ヒープ分析ホストを構成するには、「追加」をクリックして次の詳細を入力します。

    • 別名: ホストの別名を入力します。

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

  5. 構成を保存するには、「保存」をクリックします。

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

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

  1. 「設定」メニューから、ミドルウェア管理「アプリケーション・パフォーマンス管理」の順に選択します。

  2. 登録済のJVM診断エンジンのリストが表示されます。

    • 名前: JVM診断エンジンに割り当てられている名前。このIDによって、すべてのプロセスでJVM診断エンジンが識別されます。

    • タイプ: エンジンのタイプ(この場合はJVM診断エンジン)。

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

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

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

    • Availability (%): JVM診断エンジンの可用性(%)。

    • ステータス: JVM診断エンジンのステータス(アクティブ/非アクティブ)。

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

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

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

21.3 JVM診断ページへのアクセス

JVM診断エンジンをデプロイしてJVM診断を構成したら、これらの機能を使用できるようになります。「ターゲット」メニューから「ミドルウェア」を選択し、JVMプール・ターゲットまたはJava仮想マシン・ターゲットをクリックします。ターゲットのホーム・ページが表示されます。

図21-5 JVMプールのホームページ

JVMプールのホームページ

JVM診断の使用を開始するには、「Java仮想マシン・プール」ドロップダウン・メニューから該当するオプションを選択します。

また、「JVM診断」ページには、WebLogic Server、WebLogicドメイン、JBoss Serverまたはクラスタのターゲットの各ホーム・ページからアクセスすることもできます。そのためには、ターゲットをクリックし、そのホーム・ページに移動します。「ターゲット」メニューから「診断」を選択し、適切なJVM診断メニュー・オプションを選択します。

21.4 JVMプールの管理

一連のJVMをJVMプールにグループ化することで、すべての関連JVMにおける監視情報を単一のビューで提供できます。プール内のすべてのJVMの監視、JVMプールの履歴およびリアルタイム・データの表示、スレッドおよびヒープ・スナップショットの管理、新規プールの作成、既存のJVMプールの編集が可能です。JVMおよびJVMプールはEnterprise Manager内のターゲットになります。次の操作を実行できます。

21.4.1 JVMプールのホームページの表示

JVMプールのホームページには、プール内にあるすべてのJVMの詳細が表示されます。

図21-6 JVMプールのホームページ

JVMプールのホームページ

これには、次の詳細が表示されます。

  • サマリー: ポーリングが有効かどうか、およびポーリング間隔を示します。

  • 可用性: このリージョンには、JVMプール内のメンバーの可用性ステータスが表示されます。メンバーのリンクをクリックすると、JVMのホームページにドリルダウンします。

  • インシデント: このリージョンには、発生したオープン・インシデントおよびインシデントのタイプとカテゴリが表示されます。「サマリー」のリンクをクリックすると、「インシデントの詳細」ページにドリルダウンします。JVM診断イベントが21.4.1.1項「JVM診断イベントのインシデントへの昇格」で説明されているインシデントに昇格された場合、インシデントがこのリージョンに表示されます。

  • リアルタイムのスレッドの状態: このリージョンには、プール内の各JVMについて、リアルタイムのスレッドの状態が表示されます。CPU使用率、メモリー、データベース・レスポンスを待機しているスレッドの数、同期ロックを待機しているスレッドの数や、その他の詳細などのJVMの現在のアクティビティが表示されます。表示されたJVMが異なるWebLogicドメインに存在する場合は、JVMが稼働しているWebLogicドメインとホストが表示されます。「JVM」のリンクをクリックすると、「JVMパフォーマンス診断」ページにドリルダウンします。

  • 上位リクエスト(過去1時間): このリージョンには過去1時間の上位リクエストが表示されます。リクエストの平均継続時間、モニタリング・サンプル数、到着件数、スループットまたは1分当たりに完了したリクエスト数、リクエストが完了するために必要とした最大および最小継続時間、リクエストが完了するために費やした標準偏差が表示されます。

21.4.1.1 JVM診断イベントのインシデントへの昇格

イベントは、ターゲット、ジョブ、監視テンプレートに関連して、特定の時点でEnterprise Managerによって検出された重要な事象であり、通常の動作である場合も、問題のある動作を示す場合もあります。イベントの例としては、データベース・ターゲットの停止、メトリックに基づいたパフォーマンスしきい値の違反、アプリケーション構成ファイルでの未認可の変更、ジョブ実行での失敗などがあります。

インシデントは、監視対象の問題で、即時のアクションによる解決(手動または自動)あるいは根本原因の解決が必要であることを示す、1つのイベント、または相関関係のある一連のイベントです。

デフォルトでは、JVM診断イベントはインシデントには昇格されないので、JVMプールまたはJVMホームページに表示されることはありません。イベントをインシデントに昇格するには、次の手順を実行します。

  1. Enterprise Managerにログインします。

  2. 「設定」メニューで「インシデント」「インシデント・ルール」の順に選択します。

  3. 「ルール・セットの作成」をクリックします。「ルール・セットの作成」ページの「ターゲット」リージョンで、「すべてのターゲットのタイプ」オプションを選択します。「Java仮想マシン」を選択し、Java仮想マシン・プールのターゲット・タイプを選択します。

  4. 「ルール」リージョンで「作成」をクリックし、「作成するルールのタイプを選択」ウィンドウで「受信イベントおよびイベントの更新」オプションを選択して「続行」」をクリックします。「新しいルールの作成: イベントの選択」ページが表示されます。「タイプ」ドロップダウンで、「JVM診断しきい値違反」を選択します。

  5. 次に、JVM診断しきい値違反タイプの特定のイベントを選択します。

  6. 「追加」をクリックします。「JVM診断しきい値違反ルール」ウィンドウが表示されます。しきい値違反イベントをトリガーするJVM診断メトリックを選択します。これらのイベントはインシデントに昇格されます。「次」をクリックしてルールを確認し、「続行」をクリックしてルールを保存します。条件に一致するすべてのイベントはインシデントに昇格され、JVM診断プールのホームページに表示されます。

21.4.2 JVMプールのパフォーマンス診断ページの表示

このページでは、選択したJVMプールのサマリーおよび詳細情報を表示できます。また、特定の2つの期間についてJVMプール・データを比較することもできます。このページを表示するには、「ターゲット」メニューから「ミドルウェア」を選択し、JVMプール・ターゲットをクリックします。「Java仮想マシン・プール」メニューから「JVMパフォーマンス診断」オプションを選択するか、または、「Java仮想マシン・プール」メニューの隣にある「JVMパフォーマンス診断」リンクをクリックします。

図21-7 「JVMプールのパフォーマンス診断」ページ

「JVMプールのパフォーマンス診断」ページ

このぺージには、「サーバーの状態」グラフや、「上位メソッド」および「上位リクエスト」のリストなど、JVMプールのサマリー詳細が表示されます。サーバー状態のグラフや、「上位メソッド」、「上位リクエスト」、「上位DBStates」および「上位SQL」のリストなどを参照できます。

「状態」、「メソッド」、「データベース」、「JVM」、「ECID」、「DBWaitイベント」、「スキーマ名」、「リクエスト」、「SQL」などの様々な基準を指定して、表示されるデータをフィルタ処理できます。リクエスト名が存在しない場合、「リクエスト」フィールドに'/'を入力します。「リクエストのフィルタ・メニュー」と上位リクエストのリストが表示されます。表からエントリを選択し、「OK」をクリックしてフィルタとして設定します。

プールでの各JVMのサーバー状態のグラフも表示できます。指定したフィルタを無視するには、「無視フィルタ」チェック・ボックスを選択します。

「上位アクティビティ」リージョンでは、JVMプールの上位メソッド、上位リクエスト、上位DBWaitイベント、上位SQLおよび上位データベースが表示されます。リンクをクリックして、「詳細」ページにドリルダウンできます。

2つの期間でデータを比較できます。「比較対象」チェック・ボックスを選択し、比較データを表示する比較期間を指定します。

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

このページには、選択したプールのすべてのJVMのリアルタイム・データが表示されます。このデータは、JVMの様々なアクティブおよびアイドル状態のスレッド分析に役立ちます。分析では、スレッド・レベルからスレッドで使用されたメソッドに、そしてメソッドに含まれているローカル変数にドリルダウンできます。「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・プール・ターゲットをクリックします。「Java仮想マシン・プール」メニューから「ライブ・スレッド分析」オプションを選択します。JVMプールの「ライブ・スレッド分析」ページが表示されます。

図21-8 JVMプールの「ライブ・スレッド分析」ページ

JVMプールの「ライブ・スレッド分析」ページ

このページには次の内容が表示されます。

  • JVM: この表には、JVMのリストと各JVMの現在のステータスが表示されます。CPU使用率、メモリー、データベース・レスポンスを待機しているスレッドの数、同期ロックを待機しているスレッドの数およびその他の詳細など、JVMの現在のアクティビティが表示されます。

  • JVMスレッド: この表には選択したJVMで実行中のすべてのスレッドのリストが表示されます。各スレッドに関して、次の詳細が表示されます。

    • スレッド名: スレッド名。リンクをクリックすると、JVMスタックが表示されます。

    • リクエスト: スレッドによって処理されているアプリケーション・リクエスト。

    • OS Pid: このスレッドのオペレーティング・システムとスレッドのID。

    • 現在のコール: スレッドの現在のコール。

    • ファイル名: 現在のコールのクラスとメソッドを含むファイル名。

    • 行: 現在実行中のメソッドの行番号。

    • 状態: スレッドの現在の状態。これには「DB待機」、「RMI待機」または「ネットワーク待機」があります。ADP、BTMまたはDMSが構成されている場合、「リクエスト名」と「リクエスト有効期間」に値が表示されます。スレッドがDB待機状態にある場合は、「待機中」列にスレッドが待機しているデータベースの名前が表示され、「待機時間」列にはスレッドが待機する必要のある時間が表示されます。

      リンクをクリックすると、そのデータベースの診断の詳細が表示されます。詳細は、第21.5.4.1項「クロス層分析」を参照してください。これにより、データベースの問題を追跡して、データベース・アクティビティを行うアプリケーション・リクエストを特定できます。また、メソッドおよび行番号情報を含む完全なコール・スタックを表示することもできます。


      注意:

      データベース診断の詳細を表示するには、次の点を確認してください。
      • JVM診断エージェントがリクエストを開始したJVMで実行されています。

      • 監視対象のデータベースが、JVM診断エンジンによって登録されている必要があります。


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

    • エクスポート: スレッドを選択して「エクスポート」をクリックし、Excelファイルにスレッド詳細とスレッド・スタック情報をエクスポートします。

    • アイドル・スレッドの表示: このチェック・ボックスを選択して、「JVMスレッド」表にすべてのアイドル・スレッドをリストします。

    • 選択したスレッドのスナップショットの取得: リストのスレッドを選択して、「アクション」メニューから「選択したスレッドのスナップショットの取得」を選択します。スレッド・スナップショット・ページが表示されます。スナップショット設定を構成して「スレッド・スナップショットの取得」をクリックできます。選択したスレッドの詳細を含むスナップショット・ファイルが生成されます。「Java仮想マシン・プール」メニューから「スレッド・スナップショット」を選択して追加の詳細を表示します。

    • アクティブなスレッドのスナップショットの取得: このオプションでは、すべてのアクティブなスレッドのスナップショットを取得できます。「アクション」メニューから「アクティブなスレッドのスナップショットの取得」を選択すると、「スレッド・スナップショット」ページが表示されます。スナップショット設定を構成して「スレッド・スナップショットの取得」をクリックできます。すべてのアクティブ・スレッドの詳細を含むスナップショット・ファイルが生成されます。「Java仮想マシン・プール」メニューから「スレッド・スナップショット」を選択して追加の詳細を表示します。

    • スレッド履歴の表示: スレッドを選択し、「アクション」メニューから「スレッド履歴の表示」を選択します。過去30分間のスレッドの履歴データが表示されます。

    • アイドルとしてマーク: スレッドを選択し、「アクション」メニューから「アイドルとしてマーク」を選択します。選択したスレッドはアイドルとしてマークされ、新しいアイドル・スレッド・ルールが、現在のコールをこのスレッドの現在のコールとして使用して追加されます。

    • アクティブとしてマーク: アイドル・スレッドを選択して、「アクション」メニューから「アクティブとしてマーク」を選択し、ステータスを「アクティブ」に変更します。

    • 「システム・コールをマーク: JVMD構成」ページでシステム・コールとして定義されたスレッド(第21.2.1項「JVM診断エンジンの構成」を参照)とは別に、特定のスレッドをシステム・コールとしてマークできます。「JVMスレッド」表からスレッドを選択します。「アクション」メニューから「システム・コールをマーク」を選択して、そのスレッドをシステム・コールとしてマークします。このようにマークされたユーザー・コールは、その後、すべてシステム・コールとして扱われます。マークされたコールを選択して「システム・コールのマークを解除」をクリックすると、その後、そのスレッドはユーザー・コールとして扱われます。

  • スレッド情報: このリージョンには、選択したスレッドの詳細情報が表示されます。現在のコール、リクエスト、ECID、状態、待機中、待機リクエストなど、スレッドの詳細が表示されます。スレッドがDB待機状態になっている場合は、データベース・ホームページにドリルダウンするリンクをクリックします。

  • スレッド・スタック: 「スレッド・スタック」の表には、スレッドの深さ、スレッドで使用されているメソッド、メソッドが使用されているファイル、行番号など、選択したスレッドの詳細が表示されます。メソッド・レベルから下位レベルにドリルダウンできます。表からメソッドを選択して、「ローカル・オブジェクトの参照」をクリックします。ポップアップ・ウィンドウが表示され、ローカル変数、オブジェクトとそのクラス、および値が表示されます。「エクスポート」をクリックして、これらの詳細をファイルにエクスポートできます。ファイルの保存先ディレクトリを指定するように求められます。パスを入力し、「保存」をクリックして、ファイルを.csv形式で保存します。

自動リフレッシュ期間を指定して、表示されるデータをリフレッシュできます。

21.4.4 JVMプールの構成

「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・プール・ターゲットをクリックします。「Java仮想マシン・プール」メニューから「JVMプールの構成」オプションを選択します。次の操作を実行できます。

  • JVMプールの詳細を変更します。プール・プロパティを更新することで、プールの監視の有効化または無効化や、ポーリング間隔の変更ができます。「保存」をクリックして、変更を保存します。

  • JVMプールのしきい値を構成します。第21.4.4.1項「プールしきい値の更新」を参照してください。

21.4.4.1 プールしきい値の更新

次の手順を実行し、「JVMプール情報の編集」ページ(図21-9)でプールしきい値を編集します。

図21-9 JVMプール情報の編集

JVMプール情報の編集
  1. 「JVMプールのしきい値の編集」リージョンに、次の詳細が表示されます。

    • レベル: しきい値違反が発生すると、レベルがR(赤)またはY(黄色)になります。

    • メトリック: 監視対象の属性またはメトリック。

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

  2. 「追加」をクリックして修正処理を追加します。リストから修正処理を選択し、「OK」をクリックします。次のいずれかを選択できます。

    • アクションなし: 修正は定義されません。

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

      • ポーリング間隔: スナップショットの繰り返し間隔。

      • ポーリング継続時間: スナップショットの取得期間。

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

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

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

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

      • トレースの中断の許可: トレース・プロセスを中断できるかどうかを示します。

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

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

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

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

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

21.4.5 JVMプールの削除

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

21.4.6 グループへの追加

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

21.5 JVMの管理

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

21.5.1 JVMのホームページの表示

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

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

    図21-10 JVMのホーム・ページ

    JVMのホーム・ページ
  2. JVMホームページに次の詳細が表示されます。

    • サマリー: JVMが属するJVMプール、ホスト、エージェント最適化レベル、エージェント・ログ・レベル、JVMバージョンおよびベンダーの詳細など、JVMに関する詳細を表示します。

    • インシデント: このリージョンには、発生したオープン・インシデントおよびインシデントのタイプとカテゴリが表示されます。「サマリー」のリンクをクリックすると、「インシデントの詳細」ページにドリルダウンします。

    • 可用性: JVMの可用性ステータスです。「メンバー」のリンクをクリックすると、JVMのホーム・ページにドリルダウンします。

    • アクティブ・スレッド: このチャートは過去24時間におけるJVM内のアクティブ・スレッドの数を示します。

    • リアルタイムのスレッドの状態: 色分けされた列で、JVM内の様々なスレッドの状態を表示します。JVMの現在のアクティビティ(CPU使用率、メモリー、データベース・レスポンス、ネットワーク・レスポンスを待機しているスレッドの数、同期ロックを待機しているスレッドの数、アイドル・スレッド、および構成変更を含む)が表示されます。JVMをクリックすると、JVM内のスレッドのリストと各スレッドの詳細が表示されます。

    • 上位リクエスト(過去1時間): このリージョンには過去1時間の上位リクエストが表示されます。リクエストの平均継続時間、モニタリング・サンプル数、到着件数、スループットまたは1分当たりに完了したリクエスト数、リクエストが完了するために必要とした最大および最小継続時間、リクエストが完了するために費やした標準偏差が表示されます。

21.5.2 JVMパフォーマンス診断ページの表示

このページには特定のJVMのサマリーおよび詳細情報が表示されます。このページを表示するには、「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「JVMパフォーマンス診断」オプションを選択します。

図21-11 「JVMパフォーマンス診断」ページ

「JVMパフォーマンス診断」ページ

このぺージには、「サーバーの状態」グラフ、「状態別のアクティブ・スレッド」、「上位メソッド」、「上位リクエスト」、「上位DBWaitイベント」、「上位SQL」および「上位データベース」など、JVMプールのサマリー詳細が表示されます。「状態」、「メソッド」、「データベース」、「スレッド名」、「ECID」、「DBWaitイベント」、「スキーマ名」、「リクエスト名」、「SQL」、「ロック」などの様々な基準を指定して、表示されるデータをフィルタ処理できます。リクエスト名が存在しない場合、「リクエスト」フィールドに'/'を入力します。「リクエストのフィルタ・メニュー」と上位リクエストのリストが表示されます。表からエントリを選択し、「OK」をクリックしてフィルタとして設定します。

指定したフィルタを無視するには、「無視フィルタ」チェック・ボックスを選択します。「上位アクティビティ」表の期間順チェック・ボックスを選択すると、平均期間が上位5件のリクエストとSQLが表示されます。


注意:

「スキーマ名」に基づくデータのフィルタ処理を選択する場合、ターゲットまたはカスタム・データベースが登録されていることと、データベースのクロス層相関が確立されていることを確認します。

「スレッド」タブをクリックして、「スレッドの状態遷移」チャートを表示します。このグラフは、指定した期間内にスレッドの状態がどのように変遷したかを示します。 ページ上部にある時間の選択コントロールを使用すれば、簡単に時間間隔を変更して別の期間を表示することができます。カラー・バーの上にカーソルをかざすと、ある状態から別の状態、たとえば実行可能から非アクティブまたは実行可能に状態が変遷したことを確認できます。次のサーバー状態グラフが表示されます。

  • アクティブ・スレッド: このグラフは、プール内に存在するすべてのスレッドのステータスを示します。スレッドは、RMI、IO、NET、DB、CPU、LOCKなどの状態になっています。

  • JVMによるCPU使用率: このグラフは、JVMのCPU使用率を示します。

  • JVMによるヒープ使用率: このグラフは、JVMのヒープ使用率を示します。

  • ガベージ・コレクション: このグラフはJVMのメジャーおよびマイナーのガベージ・コレクションを示します。

図21-12 スレッドの状態遷移

スレッドの状態遷移

「スレッドの状態遷移」チャートの棒グラフをクリックすると「サンプル・アナライザ」が表示され、そのスレッドに対する詳細分析がスレッド上に表示されます。この機能を使用すると、監視されているデータの各サンプル(特定の時間のJVMスナップショット)を分析できます。

図21-13 サンプル・アナライザ

サンプル・アナライザ

「JVMパフォーマンス診断」ページ(図21-11)では次のことができます。

  • 2つの期間でデータを比較できます。「比較対象」チェック・ボックスを選択し、比較期間を指定します。選択した期間および現在の期間のデータが表示されます。

  • 「診断スナップショットの作成」リンクをクリックし、特定期間のJVMターゲットの診断データを収集し、このデータをオフライン・モードで分析します。詳細は、21.9項「JVMオフライン診断」を参照してください。

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

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

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

  2. 「Java仮想マシン」メニューから、「パフォーマンス・サマリー」オプションを選択します。次のページが表示されます。

    図21-14 「パフォーマンス・サマリー」ページ

    「パフォーマンス・サマリー」ページ
  3. 一定期間のJVMパフォーマンス・メトリックの値を示す一連のデフォルトのグラフが表示されます。「警告のしきい値」または「クリティカルのしきい値」に達したまでの任意の期間のメトリックを確認します。

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

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

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

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

ページの左上隅にある「ライブ・スレッド分析」リンクをクリックしても、このページにアクセスできます。

図21-15 JVMの「ライブ・スレッド分析」ページ(I)

JVMの「リアルタイム分析」ページ

このページには次の内容が表示されます。

  • JVMスレッド: この表にはJVMで実行中のすべてのスレッドのリストが表示されます。スレッドをクリックすると、「スレッド情報」表にスレッドの詳細が表示されます。各スレッドのスレッド名、リクエスト、期間、OS PID、現在のコール、ファイル名、行、状態、待機中、待機時間、Lock Held、ECIDが表示されます。

    ADPまたはBTMエージェントが稼働中の場合は、リクエスト名とリクエスト期間が表示されます。スレッドがDB待機状態にある場合は、「待機中」列にスレッドが待機しているデータベースの名前が表示され、「待機時間」列にはスレッドが待機する必要のある時間が表示されます。「DB待機」列のリンクをクリックすると、そのデータベースの診断の詳細が表示されます。これは、データベースの問題を追跡して、データベース・アクティビティを行うアプリケーション・リクエストを特定するうえで役立ちます。


    注意:

    データベースの診断の詳細は、次の場合に表示できます。
    • JVM診断エージェントがリクエストを開始したJVMで実行されています。

    • 監視対象のデータベースが、JVM診断エンジンによって登録されている必要があります。


    実行可能な操作は次のとおりです。

    • 選択したスレッドまたはアクティブなスレッドのスナップショットの取得: リストからスレッドを選択し、「アクション」メニューから「選択したスレッドのスナップショットの取得」オプションを選択します。「スレッド・スナップショット」ページが表示され、ここでスナップショットを取得します。「アクティブなスレッドのスナップショットの取得」オプションを選択すると、このJVMで実行されているアクティブなスレッドすべてのスナップショットを取得できます。スナップショットごとに次のパラメータを指定できます。

      • ポーリング間隔: スナップショットの繰り返し間隔。

      • ポーリング継続時間: スナップショットの取得期間。

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

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

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

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

      • トレースの中断の許可: トレース・プロセスを中断できるかどうかを示します。

      選択に応じて、選択したスレッドまたはアクティブなスレッドの詳細を含むスナップショット・ファイルが生成されます。「Java仮想マシン・プール」メニューから「スレッド・スナップショット」を選択して追加の詳細を表示します。

    • アイドルとしてマーク: リストからスレッドを選択し、「アクション」メニューから「アイドルとしてマーク」をクリックして、スレッドをアイドルとしてマークします。

    • アクティブとしてマーク: 「アイドル・スレッドの表示」チェック・ボックスを選択した場合、アイドル・スレッドのリストが表示されます。スレッドを選択し、「アクション」メニューから「アクティブとしてマーク」を選択して、そのスレッドをアクティブなスレッドとしてマークします。

    • スレッド履歴の表示: スレッドを選択し、「アクション」メニューから「スレッド履歴の表示」を選択します。過去30分間のスレッドの履歴データが表示されます。

    • 「システム・コールをマーク: JVMD構成」ページでシステム・コールとして定義されたスレッド(第21.2.1項「JVM診断エンジンの構成」を参照)とは別に、特定のスレッドをシステム・コールとしてマークできます。「JVMスレッド」表からスレッドを選択します。「アクション」メニューから「システム・コールをマーク」を選択して、そのスレッドをシステム・コールとしてマークします。このようにマークされたユーザー・コールは、その後、すべてシステム・コールとして扱われます。マークされたコールを選択して「システム・コールのマークを解除」をクリックすると、その後、そのスレッドはユーザー・コールとして扱われます。

    • アイドル・スレッドの表示: このチェック・ボックスを選択すると、「JVMスレッド」の表にはアイドル・スレッドのみが表示されます。

    図21-16 JVMの「ライブ・スレッド分析」ページ(II)

    JVMの「ライブ・スレッド分析」(II)
  • スレッド情報: このセクションには、選択したスレッドの詳細情報が表示されます。現在のコール、リクエスト、ECID、状態、待機中、待機リクエストなど、スレッドの詳細が表示されます。スレッドがDB待機状態になっている場合は、リンクをクリックしてデータベースのホームページにドリルダウンします。詳細は、21.5.4.1項「多層間の分析」を参照してください。

  • スレッド・スタック: 「スレッド・スタック」の表には、スレッドの深さ、スレッドで使用されているメソッド、メソッドが使用されているファイル、行番号など、選択したスレッドの詳細が表示されます。メソッド・レベルから下位レベルにドリルダウンできます。次の操作を実行できます。

    • ローカル・オブジェクトの参照: 表からメソッドを選択して「ローカル・オブジェクトの参照」をクリックします。ポップアップ・ウィンドウが表示され、ローカル変数、オブジェクトとそのクラス、および値が表示されます。

    • エクスポート: 「エクスポート」をクリックしてファイルに選択したスレッドの詳細をエクスポートできます。ファイルの保存先ディレクトリを指定するように求められます。パスを入力し、「保存」をクリックして、ファイルを.csv形式で保存します。

    • システム・コールをマーク/システム・コールのマークを解除: 選択したメソッドをシステム・コールとしてマークできます。「スレッド・スタック」表からメソッドを選択し、「アクション」メニューから「システム・コールをマーク」を選択します。この方法を使用してマークされたすべてのメソッドは、その後、システム・コールとして扱われます。マークされたコールを選択して「システム・コールのマークを解除」をクリックすると、その後、そのメソッドはユーザー・コールとして扱われます。

  • 自動リフレッシュ: 自動リフレッシュ期間を指定して、表示されるデータをリフレッシュできます。

21.5.4.1 多層間の分析

JVMスレッドからデータベースまで、あらゆるJVMアクティビティをトレースできます。ライブ・スレッドおよび監視対象の履歴データについて、多層間の相互関係を表示できます。

多層間の相互関係を構築する前に、データベースがEnterprise Managerのターゲットになっていること、そしてJVM診断に登録されていることを確認します。データベースを登録するには、「設定」メニューで「アプリケーション・パフォーマンス管理」オプションを選択して、「アプリケーション・パフォーマンス管理」ページで「JVM診断の設定」をクリックします。「データベースの登録」タブをクリックします。登録済データベース・ターゲットのリストが表示されます。

JVMDエージェントの必須フィールドの値が「いいえ」の場合は、多層間の分析に進むことができます。このフィールドの値が「はい」の場合は、必ずrootユーザーまたはデータベースを起動したOSユーザーが、ターゲット・データベースのマシン上でJVM診断データベース・エージェントを実行している必要があります。JVMDエージェントの必須フィールドの値が「使用不可のステータス」の場合は、データベースへのJDBC接続を確立できないため、多層間の分析は実行できません。

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

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

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

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

  4. 「データベースの詳細」ポップアップが開き、ターゲット・データベースのホスト、ポート、SID、ユーザーおよびJDBC URLが表示されます。「すべてのDBターゲットを登録」リンクをクリックし、JVM診断にすべてのデータベース・ターゲットを登録して、「ライブ・スレッド分析」ページをリフレッシュします。

    Oracle Database 11gリリース2では、JVM診断に関する多層間の特殊な要件をサポートし、「すべてのDBターゲットを登録」リンクをクリックすると、多層間の相互関係が自動的に確立されます。Oracle Databaseの旧リリースを使用している場合は、ホスト・マシン上でJVM診断エージェントを実行するよう、登録プロセスから求められます。

  5. 「データベースの登録の表示」をクリックすると「登録済データベース」ページに移動し、そこでJVM診断にデータベース・ターゲットを手動で登録したり、DBの「エージェントが必須」列の値を確認したりできます。データベース・インスタンスまたはカスタム・データベースを追加するには、「追加」をクリックします。データベースをカスタム・データベースとして登録する場合、「スレッド情報」セクションの「待機中」フィールドにDB名は表示されますが、多層間の相互関係は確立できません。

監視対象の履歴データについて、多層間の相互関係を表示するには、次の手順を実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「JVMパフォーマンス診断」オプションを選択します。

  2. 多層間に関連する「上位データベース」、「上位SQL」および「上位DBWaitイベント」の3つの表が表示されます。「上位データベース」の表には、JVMまたはプール内のJVMのアクティビティがある上位のデータベースが表示されます。「上位DBWaitイベント」の表には、データベース内のJVMスレッドに起因する上位のDB待機イベントが表示されます。「上位SQL」表は、サンプル数でソートされたSQLコールのリストを示しています。SQLコールをクリックすると、そのコールのチャートが表示されます。表の一番にあるフィールドをクリックするとポップアップが起動し、アクティビティが実行されたデータベースの名前が表示されます。

  3. データベース名のリンクをクリックすると、データベース診断ページにドリルダウンし、対応するデータベース・アクティビティが表示されます。

  4. 「上位SQL」と「上位DBWaitイベント」のリンクをクリックすると、データベース診断の「SQLの詳細」ページおよび「ASHビューア」ページに移動します。

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

21.5.4.2 JVM診断 - Oracle Real Application Clusterのドリルダウン

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

  1. Oracle RAC内のすべてのデータベース・インスタンスがEnterprise Managerで検出されたら、次の手順に従って多層間の相互関係を確立します。

    • Oracle RAC内の各データベース・インスタンスについて、そのデータベース・インスタンスを使用しているすべてのリスナーの詳細を、jvmd_db_listeners_additional_infoプロパティを指定することにより、追加します(このプロパティの値は"<listener name:listener host:listener IP:listener port,..."の形式である必要があります)。

      たとえば、RACに2つのデータベース・インスタンス、l1とl2があり、これらがリスナーL1とL2により使用され、L1はホスト名H1、ip IP1およびポートPORT1をリッスンし、L2はホスト名H2、ip IP2およびポートPORT2をリッスンしている場合、jvmd_db_listeners_additional_infoプロパティの値は'L1:H1:IP1:PORT1,L2:H2:IP2:PORT2"と指定する必要があります。jvmd_db_listeners_additional_infoプロパティは、JVM診断により監視されるサーバー上で実行されているアプリケーションのJDBC URLで使用されるホスト名とポート番号が、正しいデータベース・インスタンスと一致することを確認するために使用されます。

      たとえば、JDBC URLがjdbc:oracle:thin:@xxxx.oracle.com:1521:sidの場合、このURLが接続しているOracle RAC内のすべてのデータベース・インスタンスのjvmd_db_listeners_additional_infoプロパティは、LISTENER: xxxx.oracle.com:IP:1521である必要があります。

    • jvmd_db_listeners_additional_infoターゲット・プロパティをデータベース・インスタンスに追加するには、各データベース・インスタンスについて次の手順を実行します。

      • 次のコマンドを入力します。

        insert into mgmt_target_properties (TARGET_GUID, PROPERTY_NAME, PROPERTY_VALUE) values ((mgmt_targetsからtarget_guidを選択、target_name='<DB Instance Name>' およびtarget_type='<oracle_database>'), 'jvmd_db_listeners_additional_info','LISTENER_<host1>:<host2>:<IP_add1>:<Service1>,LISTENER_<host3>:<host4>:<IP_add2>:<Service2>')

      • JVM診断エンジンを再起動します。

      • すでに登録されている場合は、このデータベース・インスタンス・ターゲット(Oracle RACのメンバー)をJVM診断から削除し、それから再登録します。

      • このデータベース・インスタンスが、カスタム・データベースとしてJVM診断に登録されていないことを確認します。

  2. Oracle RACのすべてのデータベース・インスタンスがEnterprise Managerで検出されていない場合は、次の手順を実行します。

    • データベース・インスタンスをカスタム・データベースとしてJVM診断に登録します。カスタム・データベースを登録するには、JDBC URLに(JVM診断で監視されるサーバーで実行されているアプリケーションで)指定されたものと同じホスト名、IPアドレスおよびポート番号を使用します。

21.5.5 JVMのライブ・ヒープ分析ページの表示

このページには、JVMヒープのすべてのオブジェクトのリアルタイム編成が表示されます。このページを表示するには、「ターゲット」メニューから「ミドルウェア」を選択し、JVMプール・ターゲットをクリックします。「Java仮想マシン」メニューから「ライブ・ヒープ分析」オプションを選択します。

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

  • ヒープ全体の使用率(空きヒープと使用済ヒープの割合)を示す円グラフおよび棒グラフ

  • メジャーおよびマイナー・ガベージ・コレクション数

  • アクティブなスレッドまたは特定のスレッドのスナップショットを取得するオプション

  • 「JVMクラスの詳細」の表には、JVMヒープ内のすべてのクラスがサイズ(KB)の大きいものから順に表示されます。「エクスポート」オプションを使用すれば、このデータを.xlsファイルにエクスポートできます。


    注意:

    最適化レベルで実行されているJVMの場合は、次の詳細が表示されます。
    • JVMヒープ・メモリー使用量の表(様々なヒープ領域の使用量(KB)を表示)

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


図21-17 JVMの「ライブ・ヒープ分析」ページ

JVMの「ライブ・ヒープ分析」ページ

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

  • ガベージ・コレクション: ガベージ・コレクションに追加されたオブジェクトの数。ガーベージ・コレクションのタイプ(例: マイナーまたはメジャー)および特定のタイプのガベージ・コレクションの数が表示されます。

  • JVMクラスの詳細: ヒープ内の異なるオブジェクト・タイプ別のヒープ使用量のサマリー。

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

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

    • サイズ: JVMヒープのサイズ。

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

  • ヒープ・スナップショットの取得: 「ヒープ・スナップショットの取得」をクリックしてヒープ・スナップショットを取得します。詳細は、21.5.7項「ヒープ・スナップショットの取得」を参照してください。

  • クラス・ヒストグラムの管理: jamagentの最適化レベルが0のときにクラス・ヒストグラムが表示されます。ヒストグラムにはサイズでソートした上位300行のデータが表示されます。ヒストグラムを使用していくつかの操作を実行できます。詳細は、第21.5.6項「クラス・ヒストグラムの操作」を参照してください。

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

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

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

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

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

  2. 「ライブ・ヒープ分析」ページで「JVMクラスの詳細」表まで下にスクロールします。「保存」をクリックします。

  3. 「クラス・ヒストグラムの保存」ウィンドウでスナップショットの名前と説明を入力し、「OK」をクリックします。

21.5.6.2 保存済ヒストグラムの表示

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

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

  2. 「ライブ・ヒープ分析」ページで「JVMクラスの詳細」表まで下にスクロールします。「保存されたヒストグラムを表示」をクリックします。「使用可能なヒープ・スナップショット」ページが表示されます。

  3. 「使用可能なクラス・ヒストグラム」表まで下にスクロールし、保存されたクラス・ヒストグラムのリストを表示します。

21.5.6.3 ヒストグラム・ジョブのスケジューリング

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

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

  2. 「ライブ・ヒープ分析」ページで「JVMクラスの詳細」表まで下にスクロールします。「スケジュール」をクリックします。スケジュール設定ジョブが表示されます。

  3. スケジュールするジョブの名前と説明を入力します。

  4. スケジュールを、「即時」または「後で」に指定します。「後で」を選択すると、ジョブを1回のみ実行するか、指定した間隔で繰り返すかを指定できます。

  5. ジョブを繰り返す頻度を「繰返し」ドロップダウン・リストから選択します。

  6. 「猶予期間」に対するオプションを選択します。猶予期間を選択すると、ジョブは指定した猶予期間の間アクティブのままで実行されます。

  7. 「OK」をクリックしてヒストグラム・ジョブをスケジュールします。ジョブが正常に発行されたことを示す確認ウィンドウが表示されます。

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

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

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

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

  2. 「ライブ・ヒープ分析」ページで「JVMクラスの詳細」表まで下にスクロールします。「保存されたヒストグラムを表示」をクリックします。「使用可能なヒープ・スナップショット」ページが表示されます。

  3. 「使用可能なクラス・ヒストグラム」表まで下にスクロールし、保存されたクラス・ヒストグラムのリストを表示します。任意の2つのクラス・ヒストグラムを選択して「比較」をクリックします。「クラス・ヒストグラムの比較」ページが表示されます。クラス名、インスタンス・サイズ(各スナップショットのサイズ)およびインスタンス数(スナップショットごと)が表示されます。

21.5.6.5 クラス・ヒストグラムの削除

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

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

  2. 「ライブ・ヒープ分析」ページで「JVMクラスの詳細」表まで下にスクロールします。「保存されたヒストグラムを表示」をクリックします。「使用可能なヒープ・スナップショット」ページが表示されます。

  3. 「使用可能なクラス・ヒストグラム」表まで下にスクロールし、保存されたクラス・ヒストグラムのリストを表示します。削除するクラス・ヒストグラムを選択して「削除」をクリックします。確認メッセージが表示されます。「OK」をクリックして、クラス・ヒストグラムを削除します。

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

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

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、JVMターゲットをクリックします。JVMホームページが表示されます。

  2. 「Java仮想マシン」メニューから「ライブ・ヒープ分析」オプションを選択します。

  3. 「ヒープ・スナップショットの取得」をクリックします。「ヒープ・スナップショットのロード」ページが表示されます。

  4. 図21-18 「ヒープ・スナップショット」ページ

    「ヒープ・スナップショット」ページ
  5. 「ヒープ・スナップショット・タイプ」を指定します。これには次のものがあります。

    • JVMD形式(txt): JVM診断で分析する場合

    • HPROF形式(バイナリ): 外部ツールで分析する場合

  6. 「ヒープ分析オプション」フィールドでドロップ・ダウン・メニューから必要なオプションを選択します。

    • ヒープ・スナップショットのみ取得: ヒープ・スナップショットを取得し、リポジトリに後日ロードする場合は、このフィールドをブランクにしておく必要があります。スケジュールを指定し、「発行」をクリックします。ヒープ・スナップショットが生成され、それを保存するファイル名が表示されます。ヒープ・スナップショットをアップロードし、「ヒープ・スナップショット」メニューから適切なオプションを使用してそれを分析します。

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

      • JVMターゲットが実行されているホスト・マシンに管理エージェントがデプロイされている。

      • ヒープ・ローダー・ホストは、管理エージェントがデプロイされているスタンドアロン・マシン(高性能CPUとメモリーを搭載)である。

      • DBクライアント・ホームはORACLE_HOMEの場所であり、sqlldrおよびsqllplusが存在する。

      • システムの一時ディレクトリに十分なディスク領域が確保されている。

      • create_jvm_diagnostic_db_user scriptを使用してJVM診断DBユーザーが作成されている。

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

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

  7. 「ヒープ・スナップショットの時間」フィールドで、ヒープ・スナップショットをすぐに取得するか、後日取得するかを指定します。

  8. JVM診断エージェントが実行されているホストの資格証明を指定します。

  9. ヒープ・ローダー・ホストが構成されていない場合は、「追加」をクリックします。ホストの別名を入力し、管理エージェントが実行されているホスト(ヒープ分析ホスト)を選択します。「保存」をクリックします。

  10. ヒープ・ローダー・ホストがすでに構成されている場合は、利用可能なヒープ・ローダーが表示されます。リストからヒープ・ローダーを選択し、ヒープ・ローダー・ホストの資格証明を入力します。


    注意:

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

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


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

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

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

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

図21-19 使用可能なヒープ・スナップショット

使用可能なヒープ・スナップショット

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

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

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

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

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

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

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

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


      注意:

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

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

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

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

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

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

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

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

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

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

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

  2. Java仮想マシン・ターゲットまたはJava仮想マシン・プール・ターゲットから「ヒープ・スナップショットおよびクラス・ヒストグラム」を選択します。

  3. 使用可能なヒープのリストが表示されます。ヒープ・スナップショットを選択し、「詳細」クリックして、各ルートから到達可能なオブジェクトの数とメモリーを表示します。ルートから直接到達可能なオブジェクトを表示するには、「ルート」タブをクリックします。次の詳細が表示されます。

    図21-20 ヒープ・ルート

    ヒープ使用量

    ルートから直接到達可能なオブジェクトを表示するには、「ルート」 リンクをクリックします。次の詳細が表示されます。

    • ルート: ルートの名前がここに表示されます。上位40のオブジェクト・ページにドリルダウンするには、この名前をクリックします。

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

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

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

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

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

21.5.8.1.1 上位40のオブジェクト

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

図21-21 上位40のオブジェクト

上位40のオブジェクト

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

  • シグネチャ: オブジェクトのシグネチャ。リンクをクリックして、ヒープ・オブジェクト情報ページにドリルダウンします。

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

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

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

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

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

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

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

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

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

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

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

図21-22 ヒープ・オブジェクト情報

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

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

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

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

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

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

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

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

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

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

  • ルート

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

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

  • オブジェクトの子

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

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

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

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

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

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

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

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

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

  • オブジェクトの親

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

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

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

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

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

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

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

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

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

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

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

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、JVMターゲットまたはJVMプール・ターゲットをクリックします。

  2. 「Java仮想マシン」または「Java仮想マシン・プール」メニューから「ヒープ・スナップショット」オプションを選択します。

  3. 使用可能なヒープのリストが表示されます。ヒープの比較タブをクリックします。リストの先頭のヒープが比較対象として選択され、2つ目のヒープを選択するように要求されます。

  4. 2つのヒープが比較され、差分ヒープ・ページに比較表が表示されます。各ヒープについて次の詳細が表示されます。

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

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

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

    • デルタ: 比較されている2つのヒープの合計メモリーおよび調整済の到達可能なメモリーの差。

  5. 最も増加しているルートの設定をクリックして、メモリー・リークを診断します。

  6. サマリーの表示ボタンをクリックして、オブジェクトのクラスから到達可能なメモリーのボトムアップ・ビューを表示します。

21.5.8.2 オブジェクト別のヒープ使用量の表示

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

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

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

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

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

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

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

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

図21-23 メモリー・リーク・レポート

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

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

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

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

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


注意:

この項では、Enterprise ManagerがJRockit VMで実行されていることを前提としています。

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

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

  1. 「ターゲット」メニューから「ミドルウェア」を選択し、JVMターゲットをクリックします。

  2. 「Java仮想マシン」メニューから、「JFRスナップショット」を選択します。

  3. 「作成」をクリックします。「JFRスナップショットの作成」ウィンドウで説明を入力し、「作成」をクリックします。新しく作成したスナップショットがJFRスナップショット・ページに表示されます。

JFRスナップショットのダウンロード

ダウンロードするJFRスナップショットを選択し、「ダウンロード」をクリックします。ホスト資格証明の入力を要求される場合があります。資格証明を入力して「ダウンロード」をクリックし、スナップショットを保存する場所を指定します。JRockit Mission Control (JRMC)を使用してこのスナップショットを分析できます。


注意:

JVMターゲットがEnterprise Managerの監視対象ホストで稼働している場合のみ、JFRスナップショットをダウンロードできます。

21.5.10 JVMの構成

「ターゲット」メニューから「ミドルウェア」を選択し、Java仮想マシン・ターゲットをクリックします。「Java仮想マシン」メニューから「JVMターゲットの構成」オプションを選択します。「JVM情報の編集」ページが表示されます。JVMプール、ヒープ・ダンプ・ディレクトリの場所およびログ・レベルを変更できます。「保存」をクリックすると、変更内容が保存されます。

21.5.11 JVMの削除

「JVM」メニューで「ターゲットの削除」オプションを選択すると警告メッセージが表示されます。このメッセージには、削除されるターゲットの名前が表示されます。「はい」をクリックするとJVMが削除され、「いいえ」をクリックするとJVMのホーム・ページに戻ります。

21.5.12 グループへのJVMの追加

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

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

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

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

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

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

    図21-24 「スレッド・スナップショット」ページ

    「スレッド・スナップショット」ページ

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

  3. 「作成」をクリックして、JVMのすべてのアクティブ・スレッドのスレッド・スナップショットを取得します。アクティブ・スレッドをトレースできる「すべてのアクティブなスレッドのスレッド・スナップショット」ページが表示されます。詳細は、第21.6.1項「アクティブ・スレッドのトレース」を参照してください。

  4. スレッドを選択し、「詳細」リンクをクリックして、「診断イメージの分析」ページにドリルダウンします。

  5. スレッド・スナップショットを選択して「インポート」をクリックし、ローカル・マシンからスレッド・スナップショットをアップロードします。「スレッド・スナップショットのインポート」ダイアログ・ボックスが表示されます。「参照」をクリックしてインポート対象のスレッド・スナップショットを選択し、「OK」をクリックします。

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

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

  1. 「スレッド・スナップショット」ページで「作成」をクリックします。「すべてのアクティブなスレッドのスレッド・スナップショット」ページが表示されます。

    図21-25 アクティブ・スレッドの追跡

    アクティブ・スレッドのトレース
  2. 次の詳細を指定します。

    • ポーリング間隔(ミリ秒): 連続するサンプル間の時間間隔。デフォルト値は200ミリ秒ですが、変更できます。

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

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

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

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

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

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

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

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

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

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

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

    • 状態別のアクティブ・スレッド: このグラフは、JVM内に存在するすべてのスレッドのステータスを示します。スレッドは、RMI、IO、NET、DB、CPU、LOCKなど、様々な状態があります。

    • JVMによるCPU使用率: このグラフは、JVMのCPU使用率を示します。

    • JVMによるヒープ使用率: このグラフは、JVMのヒープ使用率を示します。

  • 表示されたデータは「メソッド名」、「JVM名」、「スレッド状態」、「DBState」などの様々な基準を指定してフィルタ処理できます。指定したフィルタを無視するには、「フィルタを無視」チェック・ボックスを選択します。「状態別のアクティブ・スレッド」、「上位リクエスト」、「上位メソッド」、「上位SQL」、「上位DBWaitイベント」および「上位データベース」のグラフが表示されます。

  • 「スレッド」タブをクリックして、「スレッドの状態遷移」、「アクティブ状態別のメトリック」、および「メソッド」データを表示します。

21.8 ヒープ・スナップショットおよびクラス・ヒストグラムの表示

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

ヒープ使用量を表示および分析するには、「Java仮想マシン・プール」または「Java仮想マシン」メニューから「ヒープ・スナップショット」および「クラス・ヒストグラム」オプションを選択します。次のリージョンが表示されます。

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

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

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

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

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

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

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

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

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

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

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

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

    • 詳細: このオプションをクリックすると、ヒープの詳細ビューにドリルダウンできます。

    • 比較: 2つの行を選択して「比較」をクリックします。クラス名、インスタンス・サイズ(各スナップショットのサイズ)およびインスタンス数(スナップショットごと)が表示されます。

21.9 JVMオフライン診断

1つ以上のJVMターゲットについて、特定の期間の診断データを収集してオフライン・モードで分析できます。この項では、JVMのライブ・データを収集してオフライン・モードで分析するために使用できる各種オプションについて説明します。この章には次の項目があります。

21.9.1 診断スナップショットの作成

指定された期間に1つ以上のJVMターゲットに対して診断スナップショットを作成できます。診断スナップショットを作成するには、次の手順を実行します。

  1. 「ターゲット」メニューから「ミドルウェア」を選択します。

  2. 「ミドルウェアの機能」メニューから、「診断スナップショット」を選択します。

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

  3. 診断スナップショットページで「作成」をクリックします。診断イメージの分析ページで「オフライン診断」をクリックすると、このページに移動できます。

  4. 診断スナップショットの名前と説明を入力します。

  5. 診断スナップショットの期間を指定します。

  6. 「追加」をクリックします。診断データを収集する1つ以上のJVMターゲットを選択します。


    注意:

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. 「ターゲット」メニューから「ミドルウェア」を選択します。

  2. 「ミドルウェアの機能」メニューから、「診断スナップショットの管理」を選択します。

  3. 診断スナップショット・ページで、リストからスナップショットを選択し、「分析」をクリックします。

  4. 指定した時間間隔で各JVMの詳細を分析できます。「詳細」をクリックし、JVMの詳細な診断情報を表示します。診断イメージの分析ページが表示されます。

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

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

  1. 「ターゲット」メニューから「ミドルウェア」を選択します。

  2. 「ミドルウェアの機能」メニューから、「診断スナップショットの管理」を選択します。

  3. 診断スナップショット・ページで、リストからスナップショットを選択し、「表示」をクリックします。

  4. 選択したJVMターゲットのサマリー詳細、ターゲット・タイプおよび収集されたJVMの診断情報が表示されます。

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

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

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

  1. 「エンタープライズ」メニューから、「監視」「インシデント・マネージャ」の順に選択します。

  2. 「表示」パネルで、「インシデントのないイベント」をクリックします。未処理のJVMDしきい値違反がある場合は、JVM診断イベントが表示されます。

    図21-26 インシデント・マネージャ: インシデントのないイベント

    インシデントのないイベント
  3. JVM診断イベントの「ターゲット名」列にあるリンクをクリックします。

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

21.11 インスタンス診断リクエストの表示

「インスタンス診断リクエスト」ページでは、選択した実行コンテキストID (ECID)の実行に参加したJVM、リクエストおよびリクエスト・スレッド・インスタンスの詳細なビューが提供されます。また、JVMのシステム・メトリックおよびリクエストの集計メトリックの概要も提供されます。

インスタンス診断リクエスト・ページを表示するには、次の手順に従います。

  1. Enterprise Manager Cloud Controlにログインします。

  2. 「ターゲット」メニューから「ミドルウェア」を選択します。「ミドルウェア」ページで、「ミドルウェアの機能」メニューの「インスタンス診断リクエスト」を選択します。

  3. 「インスタンス診断リクエスト」ページが表示されます。

    図21-27 インスタンス診断リクエスト(I)

    インスタンス診断リクエスト
  4. 「ECIDの選択」をクリックしてECIDページに移動します。次の詳細を入力して「検索」をクリックします。

    • ECID: 実行コンテキストID(ECID)はルート・タスクの一意のIDで、ルート・タスクに関連するタスクのツリー間で共有されます。

    • ユーザー名: リクエストを開始したユーザー。

    • リクエスト名: 実行中のリクエスト。

    • 開始時間および終了時間: リクエストの開始時間と終了時間。

    • セッション: リクエストのセッションID。

    • 期間: リクエストの持続時間。


      注意:

      • JVM診断エンジンを12.1.0.4にアップグレードしている場合、JVM診断エージェントもアップグレードして、「開始時間」と「期間」が正しく表示されるようにします。

      • JVM診断をBTM/ADPと統合して使用している環境で、JVM診断エンジンを12.1.0.4にアップグレードしたにもかかわらず、より古いバージョンのJVM診断エージェントを使用している場合、「開始時間」と「期間」が正しく表示されないことがあります。正しい日付と期間を表示するには、JVM診断エージェントを12.1.0.4にアップグレードする必要があります。


  5. 検索条件と一致したECIDのリストが表示されます。リストからECIDを選択し、「選択」をクリックします。インスタンス診断リクエスト・ページに戻ります。

    図21-28 インスタンス診断リクエスト(II)

    インスタンス診断リクエスト(II)
  6. 「ターゲット」セクションには、検索基準と一致するターゲットのリストが表示されます。「ターゲット別グループ」チェック・ボックスを選択または選択解除して、各ターゲットの詳細または各ターゲット・タイプの集約ビューの表示を選択できます。

  7. 「ターゲット別グループ」チェック・ボックスを選択解除すると、各ターゲットのインスタンス・レベルの詳細が表示されます。各JVMインスタンスについて、次の詳細が表示されます。

    • ターゲット: リクエストが実行したJVMインスタンス。

    • RID: 関係ID(RID)はタスクのツリー内の各タスクの関係を記述する番号が順序付けられたセットです。先頭の数値は通常ゼロです。先頭の数値の1は、全体のサブタスク・ツリー内でサブタスクの場所を追跡できないことを示します。

    • 開始時間: リクエストの開始時間。

    • 期間: リクエストの持続時間。

    • ステップ名: リクエストの個々のステップ。たとえば、最初のステップがjspで、2番目のステップがEJBで、3番目のステップがDBの場合があります。

    • CPU: JVMインスタンスのCPU使用率。

    • メモリー: JVMインスタンスが使用するメモリー。

    • GCメジャー/GCマイナー: メジャーおよびマイナーのガベージ・コレクションに追加されたオブジェクトの数。

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

    • リストからJVMを選択します。「インスタンス・サンプル」セクションに棒グラフが表示されます。この棒グラフは、リクエストの持続時間内に取得された各JVMのスナップショットでのスレッドの状態を示します。色ごとに、実行可能、ロック、I/O待機、DB待機、ネットワーク待機、RMI待機などの様々なスレッドの状態を表します。グラフにマウス・アイコンを置いてスレッドの詳細を確認するか、サンプルをクリックして、「サンプル・アナライザ」でサンプルの詳細を分析することができます。

    • JVMターゲットをクリックすると、パフォーマンス診断ページにドリルダウンできます。

    • 「スレッド・サンプル・インスペクタ」リンクをクリックすると、選択したサンプルのスレッド・データを表示する詳細ページにドリルダウンできます。

  8. 「ターゲット別グループ」チェック・ボックスを選択すると、各ターゲット・タイプの集約ビューが表示されます。集約ビューは、選択したECIDを実行中に、遅延を引き起こしているターゲットを識別するのに役立ちます。各JVMターゲットに対して、次の詳細が表示されます。

    • ターゲット: リクエストが実行したJVMターゲット。

    • ステップの合計: リクエストに関連するステップの合計数。

    • DB待機の継続時間: DB待機ステータスで費やされた時間。

    • ネットワーク待機の継続時間: ネットワーク待機ステータスで費やされた時間。

    • ロックの継続時間: ロックの待機に費やされた時間。

    • RMI待機の継続時間: RMI待機ステータスで費やされた時間。

    • IOでの継続時間: IO操作に費やされた時間。

    • CPUでの継続時間: CPUの処理時間。

    • 排他的継続時間: 「実行可能」、「IO」および「ロック」状態で費やされた時間。このリンクをクリックすると、排他状態のすべてのサンプルについて集約されたスタックが表示されます。

    • 合計継続時間: リクエストに費やされた合計時間。

JVMターゲットを選択します。ターゲットに対応するJVMメトリックやアプリケーション・メトリックの集約グラフが一番下のリージョンに表示されます。

21.12 emctlを使用してJVM診断エンジンを管理する

emctlコマンドを使用して、JVM診断エンジンを開始、停止およびリストできます。これらのコマンドの詳細と使用パターンを、次の表で説明します。


注意:

emctlコマンドを実行するには、OMSのORACLE_HOME/binディレクトリに移動する必要があります。

表21-1 拡張JVMD emctlコマンド

コマンド 説明

emctl extended oms jvmd list

リポジトリのすべてのJVM診断管理対象サーバーに問合せを行い、リストします。

emctl extended oms jvmd start -server=<server_name1>,<server_name2>...

For example: emctl extended oms jvmd start -server=EMJVMDMANAGER,MYJVMDMGR

コマンド・ラインの引数で指定したJVM診断管理対象サーバーを起動します。サーバーは、OMSが実行されているローカル・ホストと同じホストで稼働することも、リモート・ホストで稼働することもできます。

emctl extended oms jvmd start -all

OMSが実行されているローカル・ホストと同じホスト上のすべてのJVM診断管理対象サーバーを起動します。

emctl extended oms jvmd start -global

リモート・ホスト(このOMSホストに対してリモート)上を含め、すべてのJVM診断管理対象サーバーを起動します。

emctl extended oms jvmd stop -server=<server_name1>,<server_name2>...

For example: emctl extended oms jvmd stop -server=EMJVMDMANAGER,MYJVMDMGR

コマンド・ラインの引数で指定したJVM診断管理対象サーバーを停止します。サーバーは、OMSが実行されているローカル・ホストと同じホストで稼働することも、リモート・ホストで稼働することもできます。

emctl extended oms jvmd stop -all

OMSが実行されているローカル・ホストと同じホスト上のすべてのJVM診断管理対象サーバーを停止します。

emctl extended jvmd stop -global

リモート・ホスト(このOMSホストに対してリモート)上を含め、すべてのJVM診断管理対象サーバーを停止します。

emctl extended oms jvmd status -server=<server_name1>,<server_name2>...

For example: emctl extended oms jvmd stop -server=EMJVMDMANAGER,MYJVMDMGR

コマンド・ラインの引数で指定したJVM診断管理対象サーバーの状態を表示します。サーバーは、OMSが実行されているローカル・ホストと同じホストで稼働することも、リモート・ホストで稼働することもできます。

emctl extended oms jvmd status -all

このドメイン内のすべてのJVM診断エンジンの状態。

emctl extended oms jvmd -help

JVM診断コマンドのオンライン・ヘルプを表示します。