Назад |
Перейти на главную страницу
Большое время отклика в веб-приложении Azure
Я разработал API RESTful, который развернул в веб-приложении Azure. Выполняя нагрузочный тест с помощью JMeter, я вижу, что время отклика огромно, т.е. ~ 18 секунд. Это время отклика меня ужасает, потому что конечная точка, которую я показал, получает только ~ 1-2 КБ текстовых данных и помещает их в очередь служебной шины Azure.
Я исследовал и нашел следующее:
- Веб-приложение и очередь Azure должны находиться в одном регионе. Да, они
- Размер виртуальной машины имеет значение. У меня S3 Large
- Дизайн программного обеспечения должен быть хорошим / оптимизированным. Контроллер только ставит в очередь, никаких других операций
Для нагрузочного тестирования я подготовил экземпляр виртуальной машины в том же регионе, что и веб-приложение Azure, чтобы минимизировать задержку. Оператор enqueue занимает время порядка миллисекунд, поэтому мне интересно, что занимает лишние секунды, пока служба загружена?
Мой код создает единственный экземпляр QueueClient, который я повторно использую для всех запросов. Код - это всего лишь следующие две строки внутри ApiController
ServiceBusManager.GetQueueWriter().Enqueue(data); //data is no more than ~1KB
return Request.CreateResponse(HttpStatusCode.OK, "Data enqueued");
- Убедитесь, что ваши экземпляры Azure WM не перегружены с точки зрения ЦП, ОЗУ, диска и сети. Вы можете сделать это, используя Расширение диагностики Azure или Плагин JMeter PerfMon
- Убедитесь, что вы подписаны Лучшие практики JMeter
- Попробуйте увеличить нагрузку постепенно, таким образом вы сможете соотнести увеличение числа виртуальных пользователей с увеличением времени отклика и сможете определить, когда производительность начнет снижаться.
- Запустите тест с телеметрией инструмента профилирования (т. Е. Подключите YourKit или dotTrace) - так вы сможете узнать, на что ваше приложение тратит столько времени.