トランザクション
トランザクショントレーシング
トランザクション性能とは、トランザクションの開始と終了までの要約指標や属性を意味します。一方、トランザクショントレースは、トランザクションが実行されているステップのトレースです。トランザクションが遅い場合やエラーが発生した場合は、その原因を追跡するために実行履歴をステップごとに追跡する必要があります。これをトランザクショントレーシングと呼ばれます。
WhaTapが収集するステップの種類は、大きく分けてSQLステップ、HTTP CALLステップ、メッセージステップ、SOCKETオープンステップ、DB接続ステップ、メソッドステップなどがあります。
WhaTapのステップ(Step)は、スパン(Span)と同じ意味で使用します。
-
DB接続ステップ START-END
RDBへの接続のパフォーマンスが含まれます。ステップ情報には、名前、応答時間、エラーが含まれます。
-
SQLステップ START-END
JDBC SQLのパフォーマンスが含まれます。ステップ情報には接続情報、SQL文、エラーが含まれています。
-
HTTP Callステップ START-END
外部HTTPサービス呼び出しのパフォーマンスが含まれます。ステップ情報にはurl、host、port、応答時間、エラーが含まれます。
-
Messageステップ ADD
トレースを収集する過程で、非構造化のすべての間隔の履歴を収集する際にメッセージステップを使用します。
-
SOCKETステップ ADD
Socketオープンを表現するステップです。
-
METHODステップ START-END
メソッド応答時間を追跡します。
-
ACTIVE STACK ステップ START-END
アクティブスタックに関する情報が含まれます。別のスレッドを作成し、トレースに追加することで収集されます。
-
profile_step_normal_count Int
既定値
1000
トランザクショントレースの基本ステップ数を指定します。
-
profile_step_heavy_count Int
既定値
1020
トレースの基本ステップを超えた場合、最大heavyのステップ数を制限します。
profile_step_normal_count
のprofile_step_heavy_time
を超えるステップをカウントします。レスポンス時間のないステップは収集されません。 -
profile_step_max_count Int
既定値
1024
トレースステップの最大数を設定します。収集されたトレースステップの数が設定値を超えると、その後に収集されるステップはすべて破棄されます。
profile_step_heavy_count
を最大1000に設定すると、profile_step_max_count
までアクティブスタックが収集されます。 -
profile_step_heavy_time MiliSecond
既定値
100
Heavyステップの条件を指定します。指定された値より実行時間が長い場合は、
profile_step_normal_count
を超える場合でもprofile_step_heavy_count
以内で記録されます。 -
profile_basetime MiliSecond
既定値
500
トランザクションが設定値以下の時間内に終了した場合、トレース情報を収集しません。ただし、5分単位で最初に呼び出されたURL、エラーが発生したトランザクションに関するトレース情報は収集されます。
-
query_string_enabled Boolean
既定値
false
トランザクションURLのクエリストリングをまとめて収集する機能を有効にします。
-
query_string_urls String
トランザクションからクエリストリングを収集するURLを登録します。複数を登録する場合は、コンマ(,)を使います。
-
hook_method_patterns String
特定メソッドの応答時間を測定する場合に使用します。
[MODULE_NAME]:[CLASS_NAME].[FUNCTION_NAME]
または[MODULE_NAME]:[FUNCTION_NAME]
の形式で値を使用します。コンマ(,)区切り文字を使用して、複数のメソッドパターンを指定することができ、モジュールの全体クラスやクラスの全体モジュールは、asterisk(*)を使用して追跡できます。ノート-
このオプションで登録したメソッドは、ヒットマップ、トレース分析またはトランザクション情報画面のMethodステップで確認できます。
-
モジュールの追跡はオーバーヘッドが発生する可能性があります。そのため、正しいモジュール名とメソッド名を使用してください。
-
-
trace_error_callstack_depth Int
既定値
50
トランザクションからエラーコールスタックを収集する場合は、コールスタックの最大ライン数を指定します。このデータは、エラー統計データから表示できます。
-
trace_active_callstack_depth Int
既定値
50
トランザクションからアクティブスタックを収集する場合は、コールスタックの最大ライン数を指定します。
-
trace_active_transaction_slow_time MiliSecond
既定値
3000
アクティブトランザクションのアークイコライザーからslow区間の応答基準を指定します。
-
trace_active_transaction_very_slow_time MiliSecond
既定値
8000
アクティブトランザクションのアークイコライザーからvery slow区間の応答基準を指定します。
-
trace_active_transaction_lost_time MiliSecond
既定値
300000
トランザクションの終了を待機する制限時間です。5分以内にトランザクションが終了しない場合、トランザクション情報を収集しません。
HTTPトランザクションの追跡
以下は、HTTPリクエストと応答に関連する様々な情報を追跡および記録するエージェントのオプションです。これにより、ユーザーはアプリケーションのHTTPトランザクションを細かくモニタリングし分析できます。トランザクション名にパラメータ値を追加または特定のURLやHTTPメソッドを除外できます。またHTTPヘッダー情報やパラメータ情報を含め、トランザクションをより詳細に記録できます。
-
profile_http_header_enabled Boolean
既定値
false
トレースにHTTPヘッダーの情報を出力します。ヘッダー収集の有無に関係なく、ヘッダーをトレースに公開するための設定です。
-
profile_http_parameter_enabled Boolean
既定値
false
トレース履歴にhttpパラメータ情報を記録する場合は
true
に設定してください。ただし、パラメータを表示するには、パラメータにセキュリティキーを入力する必要があります。セキュリティキーは、エージェントのインストールパスにあるparamkey.txtファイルに6桁で指定できます。paramkey.txtが存在しない場合は、自動生成され、randomキーが設定されます。 -
trace_normalize_enabled Boolean
既定値
true
トランザクションURLをパーシングおよび正規化する機能を有効にします。
ノート値を
false
に変更すると、パスパラメータのパーシングが無効になります。 この場合、統計データの意味がなさないため、デバッグ目的で使用することをお勧めします。 -
trace_auto_normalize_enabled(*) Boolean
既定値
true
トランザクションURLを正規化すると、パターン値をアノテーションから抽出して自動的にパーシングする機能を有効にします。
-
trace_normalize_urls String
トランザクションURLをパーシングして正規化します。呼び出しURLパターンをパーシングしてパスパラメータを削除します。
ノート例)
/a/{v}/b
と宣言する場合、/a/123/b
→/a/{v}/b
に置き換えます。複数を登録するにはコンマ(,)を使用します。/a/*/b
で使用して、特定の形式のパスパラメータを削除して収集できます。 -
web_static_content_extensions(*) String
既定値
js, htm, html, gif, png, jpg, css, swf, ico
スタティックコンテンツを判断する拡張子を指定します。ここで設定された拡張子を持つトランザクションは、トレース追跡とカウントが除外されます。
-
trace_ignore_url_set String
トランザクション追跡から除外するURLを設定します。2つ以上の値を設定する場合は、コンマ(,)を区切り文字として使用します。
ノートこのオプションを通じて登録したURLは、ヒットマップ, トレース分析またはトランザクション情報画面で収集が除外されます。
-
trace_ignore_url_prefix String
トランザクション収集を除外するURL prefixを指定します。指定した値と一致するURLは、トランザクションのパフォーマンスを収集しません。
ノートこのオプションを通じて登録したURLは、ヒットマップ, トレース分析またはトランザクション情報画面で収集が除外されます。
-
trace_useragent_enabled Boolean
既定値
false
値が
true
の場合、トランザクションのユーザーエージェント情報を収集します。
非HTTPトランザクションのトレース
-
トランザクションend-point
トランザクションエンドポイントは、トランザクションの開始メソッドです。HTTPトランザクションの場合は、
HttpServlet.service()
またはFilter.doFilter()
がトランザクションの開始点であり、トランザクションエンドポイントと呼びます。 -
NON HTTP追跡
トランザクションエンドポイントとして指定されたメソッドが開始されて終了するまでのパフォーマンスをトランザクションパフォーマンスと呼びます。Non HTTPトランザクションを追跡するには、エンドポイントを指定する必要があります。
ノートエンドポイント検索
- トランザクションが呼び出されると推定されるすべてのメソッドのトレース追跡を設定してください。
- 再起動後、トランザクションを発生させてモニタリングしてください。
back stack
オプションをオンにして、入力メソッドを正しく理解してください。
対象選択
-
メソッドトレース設定
メソッドトレースを設定します。トランザクションで呼び出されるクラスを指定してください。DBを使用するプログラムでは、JDBCドライバーが便利です。
whatap.confhook_method_patterns=jdbc.*.*
hook_method_access_public_enabled=true
hook_method_access_protected_enabled=true
hook_method_access_none_enabled=true -
トランザクション開始オプションの設定
メソッドが呼び出されたら、トランザクションを開始します。トランザクション開始オプションとトランザクション開始時にスタックをダンプするオプションをオンにします。
whatap.conftrace_auto_transaction_enabled=true
trace_auto_transaction_backstack_enabled=true -
再起動後のトレース分析
再起動してください。あとからサービスを呼び出すと、トランザクションが追跡されていることがわかります。
トランザクションを検索すると、
jdbc.*
で始まるすべてのクラスのメソッドがこのトランザクションで表示されることがわかります。トランザクショントレースを検索すると、TRANSACTION BACKSTACKというメッセージステップが表示されます。TRANSACTION BACKSTACKjdbc.FakePreparedStatement.executeQuery(FakePreparedStatement.java),
com.virtual.dao.SelectDAO.execute2(SelectDAO.java:29),
com.virtual.web.SimulaNonHttp.execute(SimulaNonHttp.java:147),
com.virtual.web.SimulaNonHttp.process(SimulaNonHttp.java:76),
com.virtual.web.SimulaNonHttp.run(SimulaNonHttp.java:100) -
スタックの内容を確認
スタックの内容を確認することで、どのメソッドから開始するかを推定できます。
Examplecom.virtual.web.SimulaNonHttp.execute(SimulaNonHttp.java:147),
com.virtual.web.SimulaNonHttp.process(SimulaNonHttp.java:76),
com.virtual.web.SimulaNonHttp.run(SimulaNonHttp.java:100)上記の3つのメソッドのいずれかをトランザクションの開始点として判断できます。この状況では、逆コンパイルを実行して適切なトランザクションエンドポイントを決定する必要があります。
ロジックを見ると、
SimulaNonHtp.run
内でwhile()
が動作しながらSimulaNonHtp.process()
を呼び出し、SimulaNonHtp.execute()
が実行されます。process()
が適当であることがわかります。この部分はソースを見て判断する必要があります。Tipsエンドポイントの最も**重要な基準は終了機能です。**通常の状態では、遅延することなく直ぐに終了する必要があり、パフォーマンスの判断ができます。
トランザクションのEND POINT指定
-
トランザクションの開始点を次のように設定します。
whatap.confhook_service_patterns=com.virtual.web.SimulaNonHttp.process
-
アプリケーションを再起動してください。
process()
メソッドは、新しいトランザクションのエンドポイントになります。
hook_service_patterns
オプションではワイルドカード文字を使用できません。2つ以上の値を設定するにはコンマ(,)を区切り文字として利用してください。
トランザクション名の定義
一般的に、メソッド名でトランザクションを区別できます。
service_name_mode=[full,class,method,string,arg]
service_name_index=0
-
service_name_mode
full
,class
,method
,string
,arg
の5つのオプションを指定できます。-
full
: Full Class名をサービス名として使用します。 -
class
: Class名をサービス名として使用します。 -
method
:Method名をサービス名として使用します。 -
string
:文字列の最初のパラメータをサービス名として使用します。 -
arg
:パラメータでservice_name_index
オプションに指定されたインデックスにパラメータをサービス名として使用します。
-
マルチトランザクショントレース
以下は、アプリケーション間の呼び出しを追跡しモニタリングするためのオプションです。このオプションにより、ユーザーは複数のアプリケーション間の相互作用を理解できます。提供する様々なオプションにより、マルチトランザクションの追跡に対する詳細な動作を調整できます。
-
mtrace_rate Percentage
既定値
0
最初のトランザクションが発生したときに発行されるMTID(Multi Transaction ID)の発行率を設定するオプションです。MTIDを追跡することで、登録されているすべてのアプリケーション間の呼び出しを確認できます。同じプロジェクトに属するアプリケーションは、Caller&Callee機能によりトランザクショントレースを直接確認できます。
-
mtrace_spec String
既定値
v1
現在のインスタンスのアプリケーションバージョンを指定します。任意の文字列を指定できます。このデータは、呼び出し統計に使用されます。
-
mtrace_send_url_length Integer
既定値
80
HTTP CallerはCalleeに自分のURLを渡します。この時、URLの長さを制限しています。この長さを指定します。