非同期トランザクションにおけるエンドツーエンドのトランザクションのパフォーマンスをモニタするには、そのトランザクションの論理エンドポイントの境界を特定する必要があります。トランザクションの境界は、以下の2通りの方法で定義できます。

  • Java アプリケーションの場合は、エンドツーエンドのトランザクション処理が完了するティアを指定します。これにより、非同期バックエンドコール(JMS コールや Web サービスコールなど)を実行するトランザクションの論理トランザクション応答時間を決定できます。トランザクションによって生成された最後のスレッドがそのティアで終了すると、エージェントはトランザクションが完了したと見なします。

    Java エージェントは、ビジネストランザクションに関連付けられた最後のスレッドがいつ実行されたかを、特許出願中のヒューリスティックを使用して判断しています。これらのヒューリスティックは、一般的なケースの多くで問題なく使用できます。フレームワークによる制約を受けないスレッドハンドオフの多い複雑な環境では、これらのヒューリスティックは不適切な場合があります。たとえば、リアクティブなJava、AKKA、またはScalaの環境などです。

    ティアメカニズムの最後のスレッドによって、全トランザクションスナップショット内に示されるエンドツーエンド待ち時間と一致するエンドツーエンド時間が戻されることを検証する必要があります。

  • Java または .NET アプリケーションの場合は、トランザクション処理シーケンスの論理エンドポイントとして機能するメソッドを指定できます。応答ハンドラの場合、これは、生成されたスレッドが完了するのをモニタし、完了すると、応答をアセンブルしてクライアントに送り返すメソッドになります。エンドツーエンドのトランザクション時間には、このメソッドが呼び出されたときではなく、この構成されたメソッドの処理終了にかかる時間が含まれています。 

特定のビジネストランザクションに複数のエンドポイント境界を指定できます。この場合、最初の一致が発生すると、エンドツーエンドの遅延モニタリングのためにトランザクションが終了します。指定のトランザクションの他のティアで一致する可能性のある複数の境界を構成しないでください。  

ティアの最終スレッドの境界タイプの場合、トランザクション エンドポイントは、トレースするトランザクションを受け取るスレッドが完了する時間か、いずれかの子孫スレッドが完了する最終ポイントと見なされます。  

メソッドベースのトランザクション境界オプションの場合、メソッドに渡されるパラメータの値などのランタイム状態を考慮するよう境界を構成できます。これにより、メソッドのパラメータ値または戻り値によって論理ビジネストランザクションの完了が伝えられるようなアプリケーション設計を構成できます。 

Task クラスを返すメソッドの .NET POCO の場合、AppDynamics はタスクオブジェクトの戻りをエンドツーエンド遅延トランザクションとして自動追跡します。ここで説明するように、独自のトランザクションを Java および .NET アプリケーションのエンドツーエンド トランザクションとして構成できます。Task ベースの POCO エントリポイントについては、「POCOエントリポイント」を参照してください。 

構成を作成するには、次の手順に従ってください

  1. [Configuration] > [Instrumentation] ページを開いて、トップメニューから [Asynchronous Transactions] を選択します。[Asynchronous Transactions] の項目を表示するには、メニューリスト(>>)を展開する必要があります。
  2. [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
  3. 選択したオプションについて表示される指示に従ってください。以下の点に注意してください。
    • クラス/メソッドのオプションは標準のメソッドセレクタを使用して構成します。AppDynamics 構成でのクラスとメソッドの識別については、「インストゥルメンテーションの構成」を参照してください。 
    • ティアでの最後のスレッドのアプローチについては、まずトランザクション構成に名前を付けてから、ティアを選択します。
  4. 構成を適用するビジネストランザクションを選択します。

論理トランザクション処理フローのスレッドは、エンドツーエンドのメソッドが含まれるスレッドを含め、AppDynamicsによってトレース可能である必要があります。必要に応じて、すべてのスレッドが適切にトレースされるようカスタムスレッドの関連付けを構成します。スレッドの関連付けの詳細については、「Java エージェントのスレッドの関連付けの構成」と「.NETのスレッドの関連付け」を参照してください。