
Сегодня мы проведем нагрузочное тестирование нашей платформы после кардинального обновления. Мы перенесли 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 клиентов за минуту, затем будем повышать постепенно это количество.
Наша задача - понять при каком количестве пользователей возникают серьезные проблемы (задержки, отказы в обработке запросов).
На тесте видите, как меняется время отклика и количество запросов.
Среднее время 406 мс. Отказов нет.
Ссылка на тест - https://bit.ly/3hoIHoY
Как видите, среднее время увеличилось, но не значительно. Отказов нет.
Время чуть выросло, но опять же некритично.
Среднее время выросло до 837мс, но в целом в пределах допустимого.
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.