7.2.2 アプリケーションの性能解析トレースの概要
アプリケーションの性能解析トレースは,アプリケーションの開始から終了までの過程で,アプリケーションのトレース対象の処理が実行された時点で出力される性能解析情報(トレース情報)を使用して,アプリケーションの処理性能を解析する機能です(以降,アプリケーションの性能解析トレースをユーザ拡張性能解析トレースと呼びます)。ユーザ拡張性能解析トレースは,アプリケーションサーバの性能解析トレースを使用していることが前提となります。ボトルネックとなる処理を特定したり,障害が発生した場合に処理がどこまで到達したかを調べてトラブルシュートの効率向上を図ったりできます。また,どの処理を性能解析情報の取得対象とするかはユーザ拡張性能解析トレース設定ファイルで指定します。アプリケーションに性能解析情報の取得処理を実装する必要がないため,アプリケーションの性能を確認したり比較したりする作業を効率良く実施できます。
(1) ユーザ拡張性能解析トレースのトレース情報収集
ユーザ拡張性能解析トレースのトレース情報には,ユーザ拡張性能解析トレース設定ファイルで指定した処理が実行された時点で出力される性能解析情報が収集されます。
ユーザ拡張性能解析トレースのトレース情報収集の概要を,次の図に示します。
J2EEサーバが起動すると,ユーザ拡張性能解析トレース設定ファイルが読み込まれます。ユーザ拡張性能解析トレース設定ファイルに指定された処理(トレース取得ポイント)が呼ばれると,トレース情報がバッファに出力されます。出力された情報は,一定量溜まるとパフォーマンストレーサ(PRFデーモン)によって,トレースファイル(PRFトレースファイル)に出力されます。
Management Serverを利用して運用している場合は,PRFトレースファイルをテキスト形式に編集した性能解析トレースファイルを収集できます。運用管理者は,収集した性能解析トレースファイルを基に,運用管理ドメイン内全体の性能解析およびボトルネックの解析ができるようになります。性能解析トレースファイルの収集方法や出力情報については,「7.3 Management Serverを利用した性能解析トレースファイルの収集」を参照してください。
(2) ユーザ拡張性能解析トレースの仕組み
ユーザ拡張性能解析トレースでは,トレース情報を取得する対象メソッドの名前をユーザ拡張性能解析トレース設定ファイルで指定します。指定したメソッド名のトレース出力の概要を次の図に示します。
ユーザ拡張性能解析トレースを有効に設定している場合,ユーザ拡張性能解析トレースはユーザ拡張性能解析トレース設定ファイルを読み込みます。アプリケーションが実行され,ユーザ拡張性能解析トレース設定ファイルに指定したメソッド(トレース対象メソッド)が呼び出されると,次の位置でトレース情報を出力します。
-
メソッドの入口
メソッドが開始された直後のトレース情報。
-
メソッドの正常出口
メソッドが正常終了する直前のトレース情報。
-
メソッドの異常出口
メソッドで例外またはエラーが発生した直後のトレース情報。ただし,メソッドの呼び出し元にスローされない例外やエラーは除きます。
(3) ユーザ拡張性能解析トレースの構成
ユーザ拡張性能解析トレースは次の要素で構成されています。
なお,ユーザ拡張性能解析トレースは,性能解析トレースを出力するために,インストゥルメンテーション機能のクラスロードフック処理を利用して,トレース対象のアプリケーションを書き換えています。
-
ユーザ拡張性能解析トレースのトレース対象メソッドの情報は,ユーザ拡張性能解析トレース設定ファイルを使って設定します。ユーザ拡張性能解析トレース設定ファイルの内容については,「7.5.3 ユーザ拡張性能解析トレースのトレース対象メソッドの設定」を参照してください。
-
バッファに出力されたPRFトレースを,一定量たまったらファイルに出力する,I/Oプロセスです。PRFトレースを取得するホストごとに,一つ以上起動します。一つのホストに一つ配置することをお勧めします。
ユーザ拡張性能解析トレース設定ファイルおよびPRFデーモンの関係を次の図に示します。