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

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

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

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

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

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

ServiceBusManager.GetQueueWriter().Enqueue(data); //data is no more than ~1KB 
return Request.CreateResponse(HttpStatusCode.OK, "Data enqueued");
0
задан 19 February 2018 в 09:24
1 ответ
  1. Убедитесь, что ваши экземпляры Azure WM не перегружены с точки зрения ЦП, ОЗУ, диска и сети. Это можно сделать с помощью расширения диагностики Azure или подключаемого модуля JMeter PerfMon
  2. . Убедитесь, что вы следуете JMeter Best Practices
  3. Попробуйте постепенно увеличивать нагрузку , таким образом вы сможете соотнести увеличение количества виртуальных пользователей с увеличением времени отклика и сможете определить, когда производительность начнет снижаться.
  4. Запустите тест с помощью телеметрии инструмента профилирования (т.е. подключите YourKit или dotTrace ) - таким образом вы сможете определить, на что ваше приложение тратит столько времени.
0
ответ дан 5 December 2019 в 06:31

Теги

Похожие вопросы