Высокое время отклика в Azure Web App

Высокое время отклика в Azure Web App

Я разработал RESTful API, который развернул в Azure Web App. При выполнении нагрузочного теста с использованием JMeter я вижу, что время отклика огромное, т. е. ~18 секунд. Это время отклика ужасает меня, поскольку конечная точка, которую я выставил, получает только ~1-2 КБ текстовых данных и помещает их в очередь Azure Service Bus.

Я провел исследование и обнаружил следующее:

  1. Веб-приложение и очередь Azure должны находиться в одном регионе.Да, они
  2. Размер виртуальной машины имеет значение.У меня S3 Large.
  3. Проектирование программного обеспечения должно быть качественным/оптимизированным.Контроллер только ставит в очередь, никаких других операций.

Для нагрузочного тестирования я подготовил экземпляр виртуальной машины в том же регионе, что и Azure Web App, чтобы минимизировать задержку. Оператор enqueue занимает время порядка миллисекунд, поэтому интересно, что занимает дополнительные секунды, пока служба находится в нагрузке?

Мой код создает один экземпляр QueueClient, который я повторно использую для всех запросов. Код — это всего лишь следующие две строки внутри ApiController

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

решение1

  1. Убедитесь, что ваши экземпляры Azure WM не перегружены с точки зрения ЦП, ОЗУ, диска и сети. Вы можете сделать это с помощьюРасширение диагностики AzureилиПлагин JMeter PerfMon
  2. Убедитесь, что вы подписаныЛучшие практики JMeter
  3. Попробуйте увеличить нагрузкупостепенноТаким образом, вы сможете сопоставить увеличение числа виртуальных пользователей с увеличением времени отклика и сможете определить, когда производительность начнет снижаться.
  4. Запустите тест с помощью телеметрического инструмента профилировщика (т.е. подключитеВашКомплектилиdotTrace) - таким образом вы сможете узнать, где ваше приложение тратит столько времени.

Связанный контент