非同期プログラミングパターンではアプリケーションのスケーラビリティと性能を向上させることができます。Microsoft .NETにより、非同期タスクとしてのメソッドの指定が可能になります。

.NETのランタイムは、非同期メソッドのリソースを解放しながらタスクを完了します。タスク処理が終了すると、ランタイムは発生元の非同期メソッドにコールバックするため、メソッドは処理を継続する場合があります。

.NET エージェントは、特定の非同期プログラミングパターンをイグジットポイントとして検出します。タスクは並行して実行されるため、AppDynamics はコントローラに非同期アクティビティを同期アクティビティとは異なる形式で表示することがあります。

AppDynamicsでは、.NET非同期バックエンドトラッキングはスレッド相関と差別化されます。スレッド相関の構成については、「.NETのスレッドの関連付け」を参照してください。

対応する非同期イグジットポイントパターン

エージェントは、イグジットポイントを Microsoft .NET 4.5 の async および  await キーワードで検出します。「Async および Await を使用した非同期プログラミング」を参照してください。

エージェントは、以下のバックエンドタイプの非同期イグジットポイントを検出します:

  • ADO.NET
  • Azure Blob Storage、Azure File Storage、およびAzure Table Storage
  • CosmosDB
  • HTTP
  • MongoDB
  • WCF
  • Webサービス

バックエンドタイプは、.NET Coreマイクロサービスエージェントごとに異なります。.NET Core Microservices Agent Supportを参照してください。

コントローラ UI のフローマップには、非同期イグジットポイントが "async" とラベル付けされた点線として表示されます。非同期トランザクションのコールは、同時に実行する場合があるため、コントローラは個々の非同期コールのエンドツーエンド時間の割合(%)を表示しません。 

トランザクションスナップショットにおける非同期コールのトラブルシューティング

トランザクションスナップショットには、非同期メソッドを使用するビジネストランザクションの問題を発見するために役立つ機能が含まれています。トランザクション スナップショットの概要については、「トランザクション スナップショットを使用したビジネス トランザクション パフォーマンスのトラブルシューティング」を参照してください。

トランザクションスナップショットのフローマップ

トランザクション スナップショット フロー マップでは、ビジネストランザクションが視覚的に表示されます。トランザクションのユーザエクスペリエンス、実行時間、タイムスタンプが表示されます。また、フローマップにより特定のティアやダッシュボードおよびリモートサービスコールで費やされた合計時間の詳細を把握できます。async ラベルは、非同期コールを表しています。

スナップショットの実行ウォーターフォールビュー

トランザクションの [Snapshot Execution Waterfall View] には、ビジネストランザクションのエンドツーエンド実行がタイムライン表示されます。同期プロセスと非同期プロセスは、相対的な実行時間を時系列順に示した棒グラフに表示されます。同期コールは実線の矢印で表され、非同期コールは点線の矢印で表されます。

ウォーターフォールビューを使用すると、最も長く実行されているプロセスを視覚的に識別できます。バーをダブルクリックして、コールグラフにドリルダウンし、問題のあるコードを調査します。

メトリックブラウザにおける非同期アクティビティの分析

メトリックブラウザでは、非同期アクティビティが以下の場所に表示されます。

  • Business Transaction Performance > Business Transactions > tier > business transaction > Thread Tasks > Asynchronous Operation > External Calls
  • Overall Application Performance > tier > Thread Tasks > Asynchronous Operation > External Calls
  • Overall Application Performance > tier > Individual Nodes > node name >  Thread Tasks > Asynchronous Operation > External Calls