Azure Web App の応答時間が長い

Azure Web App の応答時間が長い

私は RESTful API を開発し、それを Azure Web App にデプロイしました。JMeter を使用して負荷テストを実行すると、応答時間が非常に長い (約 18 秒) ことがわかります。この応答時間は、私が公開したエンドポイントが約 1 ~ 2 KB のテキスト データのみを受信し、それを Azure Service Bus キューにエンキューするため、非常に残念です。

調査した結果、次のことがわかりました。

  1. Azure Web アプリとキューは同じリージョンに存在する必要があります。はい、そうです
  2. VM のサイズは重要です。私のはS3ラージです
  3. ソフトウェア設計は適切かつ最適化されている必要があります。コントローラはキューのみを実行し、他の操作は実行しません

負荷テストでは、待ち時間を最小限に抑えるために、Azure Web アプリと同じリージョンに VM インスタンスをプロビジョニングしました。エンキュー ステートメントには数ミリ秒の時間がかかるため、サービスがロードされている間に余分な秒数がかかっているのはなぜでしょうか。

私のコードは、すべてのリクエストで再利用するQueueClientのインスタンスを1つ作成します。コードはApiController内の次の2行だけです。

ServiceBusManager.GetQueueWriter().Enqueue(data); //data is no more than ~1KB 
return Request.CreateResponse(HttpStatusCode.OK, "Data enqueued");

答え1

  1. Azure WMインスタンスがCPU、RAM、ディスク、ネットワークの面で過負荷になっていないことを確認します。次のいずれかの方法で実行できます。Azure 診断拡張機能またはJMeter パフォーマンス モニター プラグイン
  2. 必ずフォローしてくださいJMeter のベスト プラクティス
  3. 負荷を増やしてみる徐々にこうすることで、仮想ユーザー数の増加と応答時間の増加を相関させ、パフォーマンスが低下し始める時期を特定できるようになります。
  4. プロファイラツールテレメトリ(接続など)を使用してテストを実行しますあなたのキットまたはドットトレース) - この方法では、アプリケーションがどこで多くの時間を費やしているかがわかります。

関連情報