Стресс-тестирование службы приложений Azure периодически прекращает обработку запросов.

В настоящее время я провожу стресс-тестирование приложения .Net Core, предназначенного для netcoreapp2.2, которое размещено в Azure как служба приложений, подключенная к плану обслуживания P1V2 (210 ACU, 3,5 ГБ памяти) с двумя экземплярами.

Конечная точка, которую я тестирую, очень проста, она проверяет токен Oauth2.0, получает пользователя и некоторую информацию о пользователе из базы данных P2 (250 DTU), размещенной в Azure, всего 4 запроса БД на запрос и возвращает строка «понг».

При запуске 15 одновременных пользователей (или более) в 200 циклах я вижу остановки в обработке, видимые на изображении (между высокими пиками). План обслуживания никогда не загружает ЦП более чем на 20-35%, а нагрузка на базу данных никогда не превышает 2%. Увеличение числа пользователей снижает среднюю пропускную способность.

Глядя на медленные запросы, кажется, что они просто случайным образом останавливаются, никогда не в одном и том же месте. Когда я смотрю на запросы БД, я никогда не вижу запрос, который занимает больше пары 100 миллисекунд, в то время как обработка некоторых запросов может занимать до 5-6 секунд.

Такое ощущение, что я достиг какого-то предела, что приводит к остановке чего-то на какое-то время, но я не могу понять, в чем проблема.

При локальном запуске того же напряжения я не вижу этих остановок.

Я использую jmeter cli для запуска стресс-тестов в обеих средах.

Любая помощь приветствуется, спасибо!

введите здесь описание изображения


person Ganhammar    schedule 02.03.2019    source источник
comment
как вы запускаете тест локально?   -  person Falco Alexander    schedule 02.03.2019
comment
Использование jmeter CLI должно было прояснить это, спасибо!   -  person Ganhammar    schedule 02.03.2019


Ответы (1)


Это может быть связано с поведением защиты Azure от атак DDOS.

Если ваше приложение подвергается DDOS-атаке, Microsoft прекратит все подключения к вашей конечной точке и, по сути, отключит вашу службу.

Чтобы избежать этого, вам необходимо настроить брандмауэр веб-приложений (WAF), чтобы исключить здоровые запросы.

person Kamran    schedule 10.03.2019