4 Javaフライト・レコーダと連携したWLDFの使用

WebLogic診断フレームワーク(WLDF)がJavaフライト・レコーダと統合されているため、WebLogic ServerイベントをJavaフライト・レコーダに伝播して、ランタイム分析またはインシデント後の分析のために共通データ・セットに含めることができます。フライト・レコーダのデータもWLDF診断イメージ・キャプチャに含まれるため、WLDFポリシーに基づいてフライト・レコーダのスナップショットをキャプチャできます。この機能を使用して、JVMおよびそこで実行しているFusion Middlewareコンポーネントの両方に対して、ランタイム・システム情報を単一ビューでキャプチャして分析できます。

この章では、この統合をWebLogic Serverに基づく本番システムに対しての包括的なパフォーマンス分析および診断ファウンデーションに提供する方法を表示する共通使用方法のシナリオについて説明します。

Javaフライト・レコーダについて

Javaフライト・レコーダはパフォーマンス監視およびプロファイリング・ツールで、常に診断情報が記録されます。Javaフライト・レコーダは、システム・クラッシュなどの重大な障害が発生した場合でも使用できます。

Javaフライト・レコーダは、Oracle HotSpotで使用できます。WebLogic ServerにHotSpotが構成されている場合、Javaフライト・レコーダはデフォルトでは有効化されていません。WebLogic ServerでJavaフライト・レコーダを有効化する方法の詳細は、「Oracle HotSpotと連携したJavaフライト・レコーダの使用」を参照してください。

ノート:

このリリースのWebLogic Serverでサポートされている構成についての最新情報は、Oracle Technology NetworkのOracle Fusion Middlewareのサポートされるシステム構成を参照してください。

Javaフライト・レコーダは、必要に応じてアクセスできるフライト記録またはJFRファイルと呼ばれる診断およびプロファイリング・データのバッファを保持します。図4-1で示されているように、フライト記録機能は、新しいデータが継続的に追加され、古いデータが削除される航空機の「ブラック・ボックス」と同じ方法で動作します。

図4-1 循環フライト記録のバッファ

図4-1の説明が続きます
「図4-1 循環フライト記録のバッファ」の説明

JFRファイルのデータには、JVMからのイベントおよびWebLogic ServerとOracle動的モニター・システム(DMS)などの他のイベント・プロデューサが含まれています。イベントに対して生成されたシステム実行フローの詳細を検討するには、Java Mission Controlを使用して、JFRファイルをいつでも分析できます。

Javaフライト・レコーダが有効化された場合、またWLDFを構成してWebLogic Serverの診断を生成し、Javaフライト・レコーダによりキャプチャされるようにする場合、追加される処理オーバーヘッドの量は最小限です。これは、特に最大値を追加する本番環境でフルタイム・ベースで使用できます。

Javaフライト・レコーダには、主に次のような利点があります。

  • 継続的に実行するように設計されている — フライト記録でキャプチャしたJVMとWLDFの両方のイベントでフルタイム・ベースで実行するようにJavaフライト・レコーダを構成すると、システム・クラッシュなどのイベントが発生したとき診断データを常に使用できます。これにより、イベントまでの診断データが使用できるようになり、イベントを再作成せずに診断することができます。

  • 包括的なデータ — Javaフライト・レコーダでは、ランタイム・アナライザおよび待機時間分析ツールなどのツールにより生成されたデータが組み合され、1つの場所に表示されます。

  • イベント・プロバイダとの統合 — HotSpotでは、Javaフライト・レコーダによって、WebLogic Server、Oracle Dynamic Monitoring System (DMS)、および他のOracleの製品など追加システム・コンポーネントを監視できるAPIのセットが含まれます。

Javaフライト・レコーダの詳細は、次の場所にある『Java Flight Recorderランタイム・ガイド』を参照してください。

http://docs.oracle.com/javacomponents/index.html

Oracle HotSpotと連携したJavaフライト・レコーダの使用

Javaフライト・レコーダは、Oracle HotSpotで使用できます。WebLogic ServerにOracle HotSpotが構成されている場合、Javaフライト・レコーダはデフォルトでは無効です。Javaフライト・レコーダを有効にして、WLDF診断データをキャプチャします。

Javaフライト・レコーダを有効化するには、JVMが実行されるWebLogic Serverインスタンスに、次のJVMオプションを指定する必要があります。

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder

ノート:

JVMオプションをHotspotに指定する順番は、非常に重要です。オプションは左から右に向かって処理され、オプションの値が重複する場合は上書きされます。そのため、次の点に注意してください。

  • HotSpotでは、FlightRecorderオプションの前にUnlockCommercialFeaturesオプションが付加されていなければ、認識されません。

  • FlightRecorderオプションのみを指定した場合、またはFlightRecorderUnlockCommercialFeaturesを指定する前に指定した場合は、HotSpot JVMは起動しません。

Javaフライト・レコーダとのWLDF統合の主な機能

WLDFはJavaフライト・レコーダと統合されているため、いくつかの便利な機能を使用できます。たとえば、WebLogic Serverイベントをフライト・レコーダでキャプチャしたり、キャプチャするデータ量を制限したり、診断イメージ・キャプチャをダウンロードするツールを使用できます。

Javaフライト・レコーダとの統合を利用するために、WLDFで提供される主な機能には次のものが含まれます。

  • フライト記録でキャプチャされたWLDF診断データ

    フライト記録でキャプチャされたWebLogic Serverイベントの診断データを生成するようにWLDFを構成できます。キャプチャされたイベントには、Webアプリケーション、EJB、JDBC、JTAとJMSリソース、リソース・アダプタおよびWebLogic Webサービスなどのコンポーネントのイベントが含まれます。

  • WLDF診断ボリュームの調節

    フライト記録のWebLogic Serverイベント・データを生成する機能は、WLDF診断ボリューム構成によって制御されます。この制御では、Javaフライト・レコーダによってキャプチャされたWebLogic Serverイベント・データの量も決定し、生成された各WebLogic Serverのデータ量を調整できます。

    ノート:

    • デフォルトでは、WLDF診断ボリュームはに設定されています。

    • WLDF診断ボリューム設定は、明示的に構成された診断モジュールまたは組込み診断モジュールには影響しません。

  • 負荷時の生成されたイベントの自動スロットル

    該当WebLogic Serverインスタンスで処理される負荷を増加すると、WLDFはイベント発生とJFRファイルに記録するために選択された受信WebLogic Serverリクエストの数を自動的にスロットルし始めます。システム負荷の増加および下落に伴って、スロットルの程度は継続的に調整されます。

    スロットルには、3つの重要な利点があります。

    • Javaフライト・レコーダ用のWLDFによって発生したキャプチャ・イベントのオーバーヘッドは、システムが特に負荷のかかっている状況の場合、最小化されます。

    • フライト記録のバッファに含まれる時間間隔が最大化され、よりよい履歴レコード・データが取得できます。

    • スロットルには、サンプリング受信WebLogic Serverリクエストの影響があり、負荷のかかっている状況下でシステム・アクティビティの正確な包括的ビューを提供しながら高いパフォーマンスを維持します。

    ノート:

    スロットルは、WLDFで取得したフライト記録データのみに影響します。これは、JVMなど、他のイベント・プロデューサによって取得されたデータに影響しません。

  • JFRファイル用のWLDF診断イメージ・キャプチャ・サポート

    Javaフライト・レコーダによってJFRファイルが生成されている場合、WLDF診断イメージのキャプチャには自動的にJFRファイルが含まれます。JFRファイルには、WebLogic Serverを含むすべてのアクティブなイベント・プロデューサによって生成されたデータを含まれます。ポリシーおよびアクション・コンポーネントを使用して取得したイメージには、可能な場合JFRファイルが含まれます。

  • 診断イメージのキャプチャのコンテンツをダウンロードするWLSTコマンド

    WLSTには、「診断イメージ・キャプチャのダウンロード用のWLSTオンライン・コマンド」で説明した診断イメージのキャプチャのコンテンツをダウンロードするコマンドが含まれています一般的には、これらのコマンドは、診断イメージのキャプチャに含むすべてのエントリのリスト、コピーおよびダウンロードに役に立ちますが、可能な場合、JFRファイルの取得にも使用できます。一度診断イメージのキャプチャから取得すると、JFRファイルはJava Mission Controlで表示されます。

Javaフライト・レコーダのユース・ケース

Javaフライト・レコーダは、クリティカルな障害の診断、ランタイム・データの調査とレポートなど、診断に関する重要な問題を解決するために役立ちます。クリティカルな障害が発生した場合、Javaフライト・レコーダでキャプチャされたデータが障害分析に役立ちます。同様に、特定の時刻および実行時にデータをキャプチャすれば、特定のイベントの前後のデータを診断するために役立ちます。

この項では、Javaフライト・レコーダを使用して診断に関する問題を解決する3つの一般的なビジネス・ケースが要約されています。

Javaフライト・レコーダを使用するシナリオの詳細は、次のURLにある『Java Flight Recorderランタイム・ガイド』のJavaフライト・レコーダについてに関する項も参照してください:

http://docs.oracle.com/javacomponents/index.html

クリティカル障害の診断 — 「ブラック・ボックス」

重大な障害が発生した場合、Javaフライト・レコーダ・バッファの内容は、航空機のブラック・ボックスと類似した方法で問題発生後の解析として使用できます。アプリケーションの終了によって生じるJVMクラッシュまたはメモリー不足エラー(OOME)はこのような失敗の例です。

これらの状況では、フライト・レコードには、障害の原因を判別するのに役に立つ次の情報が含まれます。

  • クラッシュ時のJavaフライト・レコーダの構成のメタデータを含むJVMコア・ダンプ。さらに、設定されているディスク・ストレージのパラメータにより、Javaフライト・レコーダのデータ・バッファには、一定量のデータが格納されます。

  • 障害が発生する前のWLDFによってキャプチャされたWebLogic Serverイベント。

Javaフライト・レコーダはメモリーとディスクの組合せを使用して、そのバッファを格納します。最新のデータはメモリーに格納され、「古く」なるとディスクにフラッシュされます。このように、停電または同様の重大な事態が起こった場合でもディスク上のデータは使用可能です。使用できなくなるのは、最新のデータのみです(たとえば、ディスクにフラッシュされていないデータ)。テキスト・ダンプ・ファイルには、適用可能な場合、データ・バッファへのパスを含むクラッシュ時のJavaフライト・レコーダ構成のメタデータがあります。

パフォーマンス・テストまたは本番の場合のプロファイリング

プロファイリングでは、特定時点で始まるデータがキャプチャされます。これによって、その時点の後に発生したイベントを分析することができます。次の項で説明するリアルタイム診断レポートとは対照的に、プロファイリングには、これより前のデータではなく、特定のイベントが発生した後に発生した診断データの分析が含まれます。

Javaフライト・レコーダでのプロファイリングにより、ロック競合の詳細分析および待機時間の原因を実行する機能を最適化できます。

リアルタイム・アプリケーション診断および報告

これは、特定のイベントがそのイベントに先立つシステム・アクティビティを理解するために発生したときの実行時に生成される診断データを調査する際に特に便利です。たとえば、重大なエラー・メッセージが生成される前に発生するシステム・アクティビティなどです。Javaフライト・レコーダとともにWLDFで利用できる診断機能を使用して、問題が発生する場合に大量のシステム全体の診断データを取得できます。そして、それぞれのイベントを他のシステム・アクティビティに迅速に関連付けるよう、Java Mission Controlの機能を利用して、JFRファイルに指定されたスナップショット時間内に実行データを処理します。それにより、問題の原因を切り離すことができます。

Javaフライト・レコーダと組み合せて特に役立つWLDF機能の1つは、イメージ・アクションです。イメージ・アクションによって、診断システム・モジュールで構成されているポリシーのトリガーに応答して、診断イメージ・キャプチャが生成されます。ポリシーは、1つ以上の特定の条件に対してサーバー環境をモニターし、それらの条件が発生すると、自動的にイメージ・アクションを実行できます。フライト・レコーダが有効化されると、診断イメージ・キャプチャに自動的にJFRファイルが含まれます。また、JFRファイルを診断イメージ・キャプチャから抽出でき、ただちにJava Mission Controlで調査するか、後で分析するために保存できます。Javaフライト・レコーダによってWLDFデータが取得される際に使用するイメージ・アクションは、特に断続的な問題のリアルタイム診断に適しています。

イメージ・アクションは、WLDFのポリシーおよびアクション・システムの一部です。イメージ・アクションを設定するには、1つ以上の個別ポリシーを作成します。ポリシーには、ポリシーが検出するイベントを指定するためのJava EL式が含まれます。たとえば、次のログ・ポリシー式は、重大度レベルがクリティカルでIDがBEA-149618のサーバー・ログ・メッセージを検出します。

log.severityString == 'Critical'  &&  log.messageId == 'BEA-149618'

ポリシーは次のいずれかを監視できます。

  • ローカル・ランタイムMBeanサーバー内のランタイムMBeanインスタンス

    ランタイムMBean属性が高メモリー使用率またはサーバーとのオープン・ソケット接続に関する問題などのパフォーマンス問題を検出する場合、スケジュール済ポリシーがイメージ・アクションを実行できます。

  • サーバー・ログに発行されたメッセージ

    特定のメッセージ、重大度レベルまたは文字列を発行する場合、ログ・ポリシーがイメージ・アクションを実行できます。

  • WLDFインストゥルメンテーション・コンポーネントで生成されたイベント

    インストゥルメンテーション・サービスが特定のイベントを生成する場合、イベント・ポリシーがイメージ・アクションを実行できます。

次のトピックを参照してください。

次の項では、診断イメージ・キャプチャからJFRファイルを取得する方法について説明します。

フライト記録ファイルの取得

診断イメージ・キャプチャは、異なるサーバー・サブシステムで作成された個々のイメージを含む単一のJavaフライト・レコーダ(JFR)ファイルです。JFRファイルはFlightRecording.jfrとして診断イメージに含まれます。

診断イメージ・キャプチャは、たとえばWebLogicリモート・コンソール、Fusion Middleware Control、WLSTまたはJMXアプリケーションなどのオンデマンドで生成できます。または、イメージ・アクションの結果として生成できます。

JFRファイルの内容を表示するには、まず初めに、「診断イメージの構成と取得」の説明に従って、診断イメージ・キャプチャからJFRファイルを抽出する必要があります。JFRファイルを抽出した後、Java Mission Controlでその内容を表示できます。

たとえば、診断イメージ・ファイルからJFRファイルを取得して、ローカル・ディレクトリに保存するWLSTスクリプトは、「サンプル: 診断イメージ・キャプチャからのJFRファイルの取得」を参照してください