2023年10月13日
ダイナミックメソッド・
プロファイリング機能の使用方法
ダイナミックメソッド・プロファイリング機能は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セッションでユーザIDを抽出するように構成されているので、ユーザ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のサポートチームまでご連絡ください。