В настоящее время я провожу стресс-тестирование приложения .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 для запуска стресс-тестов в обеих средах.
Любая помощь приветствуется, спасибо!