
Проведение нагрузочного тестирования через loader.io

Пробуем тестировать нагрузку для страниц сайта после перехода на платформу .NET Core
Сегодня мы проведем нагрузочное тестирование нашей платформы после кардинального обновления. Мы перенесли Falcon Space с платформы .NET 4.7 на .NET Core. Сам перенос мы опишем в отдельной статье (не все было так гладко, как заявляли адепты ASP.NET Core).
Исходные данные нагрузочного теста
Итак, тестировать мы будем только 1 страницу. Она берется из БД через механизм страниц.
В качестве инструмента тестирования будем использовать loader.io - простой сервис для быстрого теста нагрузки, позволяющий довольно быстро выявить проблемы производительности при большом количестве запросов. Сервис хорош тем, что практически не требует какой-либо сложной нагрузки для проведения тестов, плюс имеет наглядный интерфейс, что сильно ускоряет процесс по сравнению с более тяжеловесными аналогами.
В качестве сервера у нас Windows Server 2012 R2 x64 с 3Гб RAM и CPU 2 * 3 GHz и 70Гб диска (не SSD). На данном сервере работает порядка 15-20 приложений, из активно используемых - около 3.
Для теста надо зарегистрироваться на сервисе, создать хост и подтвердить права на данный домен, скопировав файл в корень хостинга.
Мы будем делать тесты по 1 минуте. Начнем с нагрузки в 100 клиентов за минуту, затем будем повышать постепенно это количество.
Наша задача - понять при каком количестве пользователей возникают серьезные проблемы (задержки, отказы в обработке запросов).
100 пользователей за 1 минуту
На тесте видите, как меняется время отклика и количество запросов.
Среднее время 406 мс. Отказов нет.
Ссылка на тест - https://bit.ly/3hoIHoY
300 пользователей за 1 минуту
Как видите, среднее время увеличилось, но не значительно. Отказов нет.
500 пользователей за 1 минуту
Время чуть выросло, но опять же некритично.
Пробуем 1000 пользователей за 1 минуту
Среднее время выросло до 837мс, но в целом в пределах допустимого.
2000 пользователей в минуту
https://bit.ly/3gwOjfG
Здесь возникли отказы и отклик возрос до 11 сек.
Примечания к нагрузочным тестам
1. Мы делали тест для работы платформы на простом примере: страница берется из базы, но при этом не содержит сложной бизнес-логики внутри и не обращается к куче таблиц за данными. Тесты на других примерах могут давать другие цифры и будут зависеть скорее больше от качества написанных запросов SQL и мощностей сервера, нежели от самой платформы.
2. Расход памяти процесса пула IIS в районе 120 Мб (что в целом немного и этот показатель значительно не менялся во время теста).
3. Тест мы делали без особой подготовки движка: не использовалось специальное кеширование вывода, не оптимизировались настройки пула. Задача была понять возможности по обработке в базовом варианте использования: без сложной бизнес-логики, но и без специальных оптимизированных настроек под тест.
Выводы по результатам нагрузочного тестирования
Какие выводы можно сделать - базово движок Falcon Space без особых настроек по оптимизации сервера и дополнительного кеширования держит 1000 пользователей в минуту. В целом, для 99% проектов это более чем достаточно (можно примерно посчитать сколько может быть дневная посещаемость при 1000 в минуту).
Выше 1000 пользователей в минуту требуются дополнительные мощности серверу или более тонкие настройки.
В планах сделать дополнительные оптимизации и провести повторные нагрузочные тесты.
UPD. Проведен еще 1 тест на 1500 пользователей в минуту. Среднее время загрузки - около 9 сек. Отказы начали возникать в самом конце теста - https://bit.ly/2Ev6ZPB
Если вас интересует техническая составляющая платформы, то смотрите эту статью Вводная по Falcon Space.
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта