Cуществует масса сервисов для нагрузочного тестирования сайта. Начиная от бесплатных онлайн-сервисов (loaddy.com, loader.io) и приложений (gatling.io, Grinder, Apache Bench, siege, Apache Jmeter) и заканчивая платными (k6.io, loadview-testing.com, loadninja.com).
Мы для нагрузочного тестирования используем Gatling. Он сочетает в себе гибкость настроек, широкие возможности по тестированию с использованием сценариев и легкую отладку, возможность построения графических отчетов для анализа.
Николай Саранюк,
Создатель веб-агентства Красный хамелеон, специализирующегося на разработке интернет-магазинов с 2013 года
Условия проведения нагрузочного тестирования
Движок: CMS PrestaShop.
Подключена CDN Cloudflare.
Этапы тестирования
Первичное тестирование с помощью нескольких инструментов.
Контрольные тесты после дополнительных настроек сервера.
Первый этап нагрузочного тестирования сайта
loader.io
В течение десяти минут запустили четыре теста с помощью сервиса loader.io.
В первых трех тестах в течение одной минуты сайт посещало 250, 500 и 1000 пользователей:
100
500
1000
Время отклика при этом было стабильно хорошее:
При тесте на 1000 пользователей сервер был загружен только на 5-10 %.
Во время четвертого теста на сайте было уже 100 пользователей в секунду в течение 1 минуты.
Время отклика также было стабильно хорошее. Был заметен скачок из-за быстро увеличенного количества пользователей.
Загрузка сервера достигла 30 %.
frugaltesting.com
Первый тест длился 3 минуты при нагрузке 20 пользователей в секунду.
Загрузка сервера
В ходе теста на сайт зайти не удалось. Нагрузку на сервер отметил администратор и изменил настройки PHP.
Повторно запустили аналогичный тест после правок уже на 10 минут.
В этот раз страницы сайта открывались, работала фильтрация, переход в карточку товара, оформление заказа.
Siege
Далее запустили тест Siege: 1 минута и 10 одновременных пользователей, режим бенчмарка.
Отличие этого теста в том, что сервис ходил по страницам фильтров, поиска и других в течение минуты.
Загрузка сервера добралась до 100 %.
Результат теста:
Для сравнения этот же тест только на главной странице дал нагрузку только 20 %.
А тест с 5 одновременными пользователями – 50 %.
При этом со стороны реального пользователя не было заметно ухудшение скорости, сайт работал хорошо.
Gatling
После этого были запущены сценарии Gatling:
10 пользователей в минуту
100 пользователей в минуту
2 пользователя в секунду в течение 1 минуты (всего 120 пользователей)
5 в секунду в течение 1 минуты (300 пользователей)
10 в секунду в течение 1 минуты (600 пользователей)
20 в секунду в течение 1 минуты (1200 пользователей)
5 в секунду в течение 5 минут (1500 пользователей)
10 в секунду в течение 5 минут (3000 пользователей)
В итоге тестирования с помощью Gatling пришли к таким выводам:
В тесте на 20 посетителей в секунду удалось добиться получения отказов.
Сервер стабильно держит до 100 запросов в секунду (это 500 пользователей одновременно на сайте), при большем количестве перестает справляться.
Сервер способен держать нагрузку 10 пользователей в секунду в течение одной минуты, дальше начинаются отказы.
Нагрузку 5 пользователей в секунду при существовавшей конфигурации ресурс выдержал 5 минут (т.е. выдержит и дольше).
Если подтянуть показатели сервера, интернет-магазин сможет без проблем держать большую нагрузку.
Первый этап тестирования закончился выявлением ряда проблем с производительностью, а также ответом на основной вопрос клиента о способности PrestaShop держать нагрузку.
В текущей конфигурации движок (с учетом подключенного Cloudflare) способен выдерживать нужное количество посетителей и отказываться от CMS из-за производительности потребности нет.
Второй этап нагрузочного тестирования интернет-магазина
В течение следующей недели вносились правки в конфигурацию сервера, после чего провели повторные тесты.
Для контрольной проверки использовали только Gatling с такими сценариями:
5 пользователей в секунду в течение 5 минут (всего 1500 пользователей) – кликабельно
10 пользователей в секунду в течение 5 минут (всего 3000 пользователей) – кликабельно
В обоих отчетах видны явные улучшения.
Несмотря на то, что отказы во втором тесте сохранились, заметно уменьшилось их количество с 11700 до 7000.
Кривая активных пользователей в первом сценарии ранее увеличивалась, а после изменения конфигурации сервера перестала нарастать. Это значит, что сервер успевает обрабатывать все запросы, а не накапливает их.
Было
Стало
Также сильно улучшилось время ответа.
Было
Стало
Распределение времени ответа выглядело так:
Было
Стало
Нагрузочное тестирование интернет-магазина 5watt позволило определить предельные показатели загрузки сервера и CMS, выявить и оперативно исправить слабые места, чтобы существенно повысить производительность ресурса. В итоге добились сильного снижения отказов, а также корректного распределения нагрузки на «железо», что уменьшило среднее время ответа сервера.