Назад | Перейти на главную страницу

Большое время отклика в веб-приложении Azure

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

Я исследовал и нашел следующее:

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

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

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

ServiceBusManager.GetQueueWriter().Enqueue(data); //data is no more than ~1KB 
return Request.CreateResponse(HttpStatusCode.OK, "Data enqueued");
  1. Убедитесь, что ваши экземпляры Azure WM не перегружены с точки зрения ЦП, ОЗУ, диска и сети. Вы можете сделать это, используя Расширение диагностики Azure или Плагин JMeter PerfMon
  2. Убедитесь, что вы подписаны Лучшие практики JMeter
  3. Попробуйте увеличить нагрузку постепенно, таким образом вы сможете соотнести увеличение числа виртуальных пользователей с увеличением времени отклика и сможете определить, когда производительность начнет снижаться.
  4. Запустите тест с телеметрией инструмента профилирования (т. Е. Подключите YourKit или dotTrace) - так вы сможете узнать, на что ваше приложение тратит столько времени.