非同期トランザクション境界
非同期トランザクションにおけるエンドツーエンドのトランザクションのパフォーマンスをモニタするには、そのトランザクションの論理エンドポイントの境界を特定する必要があります。トランザクションの境界は、以下の2通りの方法で定義できます。
-
Java アプリケーションの場合は、エンドツーエンドのトランザクション処理が完了するティアを指定します。これにより、非同期バックエンドコール(JMS コールや Web サービスコールなど)を実行するトランザクションの論理トランザクション応答時間を決定できます。トランザクションによって生成された最後のスレッドがそのティアで終了すると、エージェントはトランザクションが完了したと見なします。
注:Java エージェントは、ビジネストランザクションに関連付けられた最後のスレッドがいつ実行されたかを、特許出願中のヒューリスティックを使用して判断しています。これらのヒューリスティックは、一般的なケースの多くで問題なく使用できます。フレームワークによる制約を受けないスレッドハンドオフの多い複雑な環境では、これらのヒューリスティックは不適切な場合があります。たとえば、リアクティブなJava、AKKA、またはScalaの環境などです。
ティアメカニズムの最後のスレッドによって、全トランザクションスナップショット内に示されるエンドツーエンド待ち時間と一致するエンドツーエンド時間が戻されることを検証する必要があります。
- Java または .NET アプリケーションの場合は、トランザクション処理シーケンスの論理エンドポイントとして機能するメソッドを指定できます。応答ハンドラの場合、これは、生成されたスレッドが完了するのをモニターし、完了すると、応答をアセンブルしてクライアントに送り返すメソッドになります。
特定のビジネストランザクションに複数のエンドポイント境界を指定できます。この場合、最初の一致が発生すると、エンドツーエンドの遅延モニタリングのためにトランザクションが終了します。指定のトランザクションの他のティアで一致する可能性のある複数の境界を構成しないでください。
ティアの最終スレッドの境界タイプの場合、トランザクション エンドポイントは、トレースするトランザクションを受け取るスレッドが完了する時間か、いずれかの子孫スレッドが完了する最終ポイントと見なされます。
メソッドベースのトランザクション境界オプションの場合、メソッドに渡されるパラメータの値などのランタイム状態を考慮するよう境界を構成できます。これにより、メソッドのパラメータ値または戻り値によって論理ビジネストランザクションの完了が伝えられるようなアプリケーション設計を構成できます。
ベースの POCO エントリポイントの詳細については、「Task」を参照してください。 構成を作成するには、次の手順に従ってください。
- ページを開き、トップメニューから [Asynchronous Transactions] を選択します。[Asynchronous Transactions] 項目を表示するには、メニューリスト([>>])を展開する必要があります。
- [Add] をクリックして、境界設定メソッドを選択します。
- Java のみ:Transaction is complete when last thread on specified Tier is finished running。
- Java または .NET:Transaction is complete when specified class/method is invoked。ただし、エンドツーエンドのトランザクション時間には、このメソッドが呼び出されたときではなく、この構成されたメソッドの処理終了にかかる時間が含まれています。
- 選択したオプションについて表示される指示に従ってください。次の点に注意してください。
- クラス/メソッドのオプションは標準のメソッドセレクタを使用して構成します。Splunk AppDynamics 構成でのクラスとメソッドの識別については、「インストルメンテーションの設定」を参照してください。
- ティアでの最後のスレッドのアプローチについては、まずトランザクション構成に名前を付けてから、ティアを選択します。
- 構成を適用するビジネストランザクションを選択します。
論理トランザクション処理フローのスレッドは、エンドツーエンドのメソッドが含まれるスレッドを含め、Splunk AppDynamics によってトレース可能である必要があります。必要に応じて、すべてのスレッドが適切にトレースされるようカスタムスレッドの関連付けを構成します。スレッドの関連付けの詳細については、「Java エージェントでスレッドの関連付けを設定する」と「.NET のスレッドの関連付け」を参照してください。