ダイナミックメソッド・プロファイリング機能の紹介

ダイナミックメソッド・プロファイリング機能の使用方法

 ダイナミックメソッド・プロファイリング機能はAPサーバを再起動しなくてもトランザクションのプロファイリングレベルを上下させることができるJENNIFERの機能です。

ところで、プロファイルとは何でしょうか?ソーシャルネットワークでプロファイルとは、個人のプロフィールを説明し、アウトラインを示すために与えられた情報です。これと同様に、トランザクションプロファイルでは個別メソッドの応答時間、パラメーターまたは返却値のようなトランザクションの情報が含まれています。

プロファイル情報では、コードのクラスがトランザクションを完了するために使用するトランザクションの動作、実行されたメソッド、各メソッドの実行時間、データベースに対して実行されたSQLクエリーの実行時間を含んでいます。

これらすべてのデータはトランザクションの動作を理解し、問題の根本的な原因を分析するときに非常に有用です。今回はJENNIFERのダイナミックメソッド・プロファイリング機能の使用方法について学びましょう。

トランザクション

APサーバのトランザクションはブラウザからリクエストされたURLの最終結果のページを作るために必要な一連のプロセスを意味します。
下の図はトランザクション処理の例です。

<トランザクションが処理される過程>

ブラウザのリクエストは複数のクラスで処理されます。この場合はClass AからClass Dまで処理されて、Class Dから2回データベース(E)をアクセスします。すべてのクラスにおいて収集されたプロフィールデータは次の通りです。

しかし、一般的な状況で全てのクラスの応答時間を測定すると、応答時間を低下させるオーバーヘッドが発生する可能性があります。そのため、JENNIFERは基本的に最小ロジックの応答時間だけを測定します。上記の図では赤色で表示された項目だけが追跡され、以下の図のようにプロファイルのデータを得ることができます。

場合によっては、基本(最小)プロファイル情報が充分でない可能性があるため、実行中の取引に関する追加情報が必要となる場合があります。この場合、ダイナミックメソッド・プロファイリング機能を使用して追加情報を得ることができます。

ダイナミックメソッド・プロファイリング機能の使用

ダイナミックメソッド・プロファイリング機能を説明するために次の例で確認します。ユーザが自分のアカウントにアクセスしようとしてログインしたらサーバからの応答時間が長くかかります。

もしJENNIFERがシステムにインストールされてモニタリングしているならJENNIFERのダイナミックメソッド・プロファイリング機能を使ってこの問題の原因を見つけることができます。応答時間が遅いトランザクションは、X-Viewチャートの上の方にあるので確認します。

システム平均応答時間およびTPSによってX-Viewチャートの最上段にトランザクションがまとまっていて確認しにくい場合があります。その場合、X-Viewチャートの検索範囲を狭めるかフィルター機能を使用して特定の基準でトランザクションを検索することができます。

このシステムではJENNIFERがHTTPセッションでUSER IDを抽出するように構成されているので、ユーザのUSER IDを使用して問題が発生している特定ユーザに関連するトランザクションを検索してみます。トランザクションを分析し、応答時間ごとに整列するとwelcome pageの応答時間が応用プログラムの平均応答時間に比べてかなり長くかかっていることを見ることができます。

しかし、上記で説明したように(一般的な状況で全てのクラスの応答時間を測定すると応答時間を低下させる過度のオーバーヘッドが発生する可能性があるため)、JENNIFERは基本プロファイル情報のみを表示します。

開始ページのプロファイルを確認すると、トランザクション時間の100%がアプリケーションロジック(コードのレベル)で発生したことが分かります。JENNIFERは”Not Profiled”メッセージと応答時間のパーセントだけで、それ以上の詳細な情報を示しません。

現時点では、応答時間の問題がデータベースや外部呼び出しと関連がなくアプリケーションのロジックそのものであることが分かります。一部のクラスではメソッドが応答時間の遅延を発生させているので、ダイナミックメソッド・プロファイリングを使用してトランザクションに対する追加情報を得ることができます。

ダイナミックメソッド・プロファイリング機能を適用する方法はいくつかあって、特定のメソッド、特定のクラスまたはパッケージ全体に対してプロファイルを適用することができます。プロファイルは多数のクラスとメソッドに対する情報を収集する為にオーバーヘッドの原因になる可能性があります。このため、パッケージ全体に適用することは推奨しません。数分間の活性化は良いですが、分析を終えた後は直ちに非活性化することを推奨します。

プロファイリングの設定後、X-Viewに戻って新しいトランザクションが来るまで待ってみます。以前と同一のフィルターを適用することで目的のトランザクションを迅速に確認することができます。

また、今回は追加情報が確認でき、トランザクションで実行される各クラス、メソッドと各クラスの所要時間が確認できます。これによって図にある”load Profile”メソッドの応答時間が遅い理由が分かります。

メソッドのパラメーターと返却値

JENNIFERは多くのユーザ分析を通して、ユーザは「プロファイルを分析しながらメソッドのパラメーターと返却値を表示するための設定を簡単に済ませたい」と考えていることが分かりました。そのため、Call Treeからメソッドを選択して簡単にこれらを表示できる機能を提供しています。

たとえば、関数のパラメーターを知りたい場合は、X-ViewのCall Treeからメソッドをマウスで右クリックして”メソッドプロファイル”を選択し、メソッドプロファイルのポップアップを開くことができます。そこで返却値またはパラメーターを追跡するか、両方を選択します。

次にメソッドを呼び出す際にJENNIFERがX-ViewのCall Treeのメソッドの横にパラメーターまたは返却値を表示したことを確認できます。

今回はJENNIFERの強力な機能であるダイナミックメソッド・プロファイリング機能の使用方法と活用方法についてまとめてみました。さらに機能の詳細について知りたいことや質問がありましたらJENNIFERのサポートチームまでご連絡してください。