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

Сегодня мы проведем нагрузочное тестирование нашей платформы после кардинального обновления. Мы перенесли 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 минуту

https://bit.ly/3htCica

Как видите, среднее время увеличилось, но не значительно. Отказов нет.

500 пользователей за 1 минуту

https://bit.ly/3hoLX3u

Время чуть выросло, но опять же некритично.

Пробуем 1000 пользователей за 1 минуту

https://bit.ly/2QnrvUY

Среднее время выросло до 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

Автор статьи - Руслан Раянов

Cоздатель платформы Falcon Space
Демо-стенд компонентов
На стенде можно посмотреть различные компоненты в действии: таблицы, формы, модальные окна, диаграммы, карта и т.д.
Демо-сайт решений
Базисные решения, которые можно гибко адаптировать под себя: менять внешний вид, бизнес-логику и даже структуру базы данных.
Обсудить проект
Задайте начальные вопросы по проекту, которые вас сейчас волнуют. Мы бесплатно проконсультируем вас и порекумендуем лучшее решение.

If you like our articles, then please subscribe to our channel in Telegram - Falcon Space.
In it we will publish updates on articles and other materials regarding our platform.