7.2.1 アプリケーションサーバの性能解析トレースの概要
アプリケーションサーバの性能解析トレースは,クライアントからのリクエストを処理する過程でアプリケーションサーバの各機能が出力する性能解析情報(トレース情報)や,セッションのライフサイクルを判断するための情報を使用して,アプリケーションサーバの処理性能を解析する機能です(以降,アプリケーションサーバの性能解析トレースを性能解析トレースと呼びます)。アプリケーションサーバのボトルネックを解析したり,障害が発生した場合にリクエストの処理がどこまで到達したかを調べてトラブルシュートの効率向上を図ったり,セッションやグローバルセッション情報のライフサイクルを把握したりできます。
(1) 性能解析トレースのトレース情報収集
性能解析トレースのトレース情報には,クライアントからデータベースなどのEISに至るまで,およびその処理結果がクライアントに返却されるまでのリクエストの一連の処理で出力される性能解析情報が収集されます。
性能解析トレースのトレース情報収集の概要を,次の図に示します。
WebクライアントまたはEJBクライアントからリクエストが送信された場合に,Webサーバ,J2EEサーバおよびCTMでは,決まった処理のポイントでトレース情報がバッファに出力されます。出力された情報は,一定量たまるとパフォーマンストレーサ(PRFデーモン)によって,トレースファイル(PRFトレースファイル)に出力されます。トレースが出力されるポイントを,トレース取得ポイントといいます。パフォーマンストレーサには,トレース取得レベル(標準または詳細)を設定できます。パフォーマンストレーサに設定するトレース取得レベルをPRFトレース取得レベルといいます。
Management Serverを利用して運用している場合は,PRFトレースファイルをテキスト形式に編集した性能解析トレースファイルを収集できます。運用管理者は,収集した性能解析トレースファイルを基に,運用管理ドメイン内全体の性能解析およびボトルネックの解析ができるようになります。性能解析トレースファイルの収集方法や出力情報については,「7.3 Management Serverを利用した性能解析トレースファイルの収集」を参照してください。
(2) 性能解析トレースの仕組み
性能解析トレースでは,システム内部のイベント単位で,複数のノードおよびプロセス間にわたるトレース情報を取得できます。これによって,一連の処理の中で,どの処理がボトルネックになっているかをトレースできます。
イベント単位でトレースを取得するために,性能解析トレースでは,イベント単位の一連の処理に一貫したキーを設定して管理します。イベント内のトレース取得ポイントで出力するトレースには,キーの情報が付加されます。これによって,一連の処理がトレースできます。
なお,トレースを出力するEJBコンテナ,Webコンテナなどを,機能レイヤといいます。性能解析トレースでは,次の機能レイヤの入り口と出口でトレース情報を出力します。必要に応じて,各機能レイヤ内の処理のうち,性能に影響を与える処理ごとにも,トレース情報を出力します。アプリケーションの実行環境と該当する機能レイヤを次の表に示します。
機能レイヤ |
アプリケーションの実行環境 |
|
---|---|---|
J2EEアプリケーションの実行環境 |
バッチアプリケーションの実行環境 |
|
CTM |
○ |
− |
Webコンテナ |
○ |
− |
EJBコンテナ |
○ |
− |
Timer Service |
○ |
− |
JNDI |
○ |
○ |
JTA |
○ |
○ |
JCAコンテナ |
○ |
○ |
DB Connector |
○ |
○ |
RMI(通信処理)※1 |
○ |
○ |
OTS |
○ |
○ |
標準出力/標準エラー出力/ユーザログ |
○ |
○ |
DI |
○ |
− |
バッチアプリケーション実行機能 |
− |
○※2 |
JPA |
○ |
− |
TP1インバウンド連携機能 |
○ |
− |
CJMSプロバイダ |
○ |
− |
JavaMail |
○ |
− |
CDI |
○ |
− |
JSF 2.3 |
○ |
− |
JAX-RS |
○ |
− |
Java Batch |
○ |
− |
また,性能解析トレースでは,これらの機能レイヤのほかに,J2EEサーバの開始処理,終了処理,トランザクションタイムアウト発生時,およびセッションの生成/破棄でもトレースを出力します。
なお,トレース情報の内容には,トレース情報を取得したプロセスID,取得ポイントを示すイベントID,トレース取得年月日やトレース情報を取得したクライアントアプリケーションのIPアドレスなどの情報が含まれます。
- 参考
-
これらの機能レイヤのほか,Application Serverの構成ソフトウェアおよび関連プログラムでも,次の機能レイヤでPRFトレースが取得できます。
-
Web Services - Base
-
TP1 Connector
-
TP1/Client/J
-
TP1/MQ Access
-
Reliable Messaging
-
HCSCサーバ
-
HCSCサーバ(Object Accessアダプタ)
-
Service Coordinator Interactive Workflow
-
HCSCサーバ(ファイルアダプタ)
-
HCSCサーバ(Message Queueアダプタ)
-
HCSCサーバ(FTPアダプタ)
-
JAX-WSエンジン
-
Elastic Application Data store
-
- キー情報の構成
-
-
キー情報を取得したプロセスID
-
キー情報を取得したプロセスが起動しているホストのIPアドレス
-
PRFトレースのI/Oプロセス(PRFデーモン)単位で割り当てられる通信番号
なお,PRFデーモンが起動していない場合は,通信番号として時刻が返却されます。ただし,この場合,通信番号の一意性を保てないおそれがあるので,PRFデーモンは必ず起動してください。
-
PRFトレースには,次の2種類のキー情報が付与されます。
-
各イベントで一連の処理の先頭になるプロセスで取得した情報です。
-
J2EEアプリケーションの場合
HTTP Server,NIO HTTPサーバ,またはEJBクライアントで取得した情報になります。
-
バッチアプリケーションの場合
バッチアプリケーションの実行直前に取得した情報になります。
-
-
J2EEアプリケーションの場合,次に示すEnterprise Beanを呼び出す処理単位で設定される情報です。
-
WebコンテナからEJBコンテナの呼び出し
-
EJBクライアントからEJBコンテナの呼び出し
-
EJBコンテナからEJBコンテナの呼び出し
なお,バッチアプリケーションの場合は,バッチアプリケーションの実行直前に設定される情報になります。
-
(3) 性能解析トレースの構成
性能解析トレースは,次のプログラムで構成されています。
-
アプリケーションサーバの各機能レイヤに組み込まれています。各機能レイヤが出力したPRFトレースを,共用メモリに作成されたバッファに出力します。
-
バッファに出力されたPRFトレースを,一定量たまったらファイルに出力する,I/Oプロセスです。PRFトレースを取得するホストごとに,一つ以上起動します。一つのホストに一つ配置することをお勧めします。
PRFトレース出力ライブラリとPRFデーモンの関係を次の図に示します。
PRFトレース出力ライブラリによってトレースが出力されるバッファ領域は,PRFデーモン起動時に作成されます。バッファ領域は,共用メモリに作成されます。ただし,前回PRFデーモンを起動した時に作成したバッファ領域が残っている場合は,その領域を再利用します。バッファ領域が削除されないで残っているのは,前回起動したPRFデーモンが異常終了した場合です。
PRFデーモンが正常終了した場合,バッファ領域内のバッファデータはPRFトレースファイルに出力され,バッファ領域は削除されます。
バッファ領域が不足すると,KFCT26999-Wのメッセージが出力されて,PRFトレースが完全に出力されない場合があります。そのため,このメッセージが出力される場合は,バッファサイズのチューニングをしてください。
(4) トレース情報の取得によるトラブルシュート
トレース情報を利用したトラブルシュートについて説明します。
性能解析トレースに出力される情報を取得することで,トラブルシュートとして次のように使用できます。
-
J2EEアプリケーションのトランザクションがタイムアウトした場合やHTTP Serverのリバースプロキシでのレスポンス受信時にタイムアウトが発生した場合,性能解析トレースに出力されるルートアプリケーション情報を使用して,タイムアウトしたトランザクションやリクエストを特定できます。
-
データベースとの接続中にトラブルが発生した場合,性能解析トレースに出力されるコネクションIDを利用して,トラブルが発生したコネクションを特定できます。