Нагрузочное тестирование сайта: зачем, когда и как

Обновлено

Сайт может быстро открываться, когда на нём десять человек, и перестать отвечать, когда их становится тысяча. Узнать это в день распродажи или рекламной кампании — самый дорогой способ: деньги на рекламу потрачены, а покупатели видят ошибку. Нагрузочное тестирование отвечает на этот вопрос заранее: сколько посетителей одновременно сайт выдерживает уверенно, при какой нагрузке начинает тормозить и что именно ломается первым.

Что такое нагрузочное тестирование сайта

Это проверка, при которой на сайт отправляют много одновременных «посетителей» — программ, которые открывают страницы так же, как это делают люди: главную, каталог, карточки товаров, поиск. Нагрузку увеличивают постепенно и смотрят, как меняется время ответа и появляются ли ошибки.

Результат теста — не «сайт хороший» или «плохой», а конкретные цифры:

  • сколько человек может находиться на сайте одновременно без заметного замедления;
  • при какой нагрузке страницы начинают открываться дольше нескольких секунд;
  • когда появляются ошибки (чаще всего 502 и 503);
  • какие страницы сдаются первыми — обычно это поиск, фильтры каталога и корзина.

Когда его нужно проводить

  • Перед распродажей, «Чёрной пятницей», запуском рекламы или рассылкой — когда известно, что посетителей станет в разы больше.
  • После переезда на другой хостинг или сервер — чтобы убедиться, что новый тариф не хуже старого.
  • После крупной доработки или обновления CMS — новая функция может сделать страницы тяжелее.
  • Регулярно, например раз в месяц — сайты медленно «тяжелеют»: растёт каталог, добавляются модули и счётчики.

Какие бывают тесты

В разговорах их часто смешивают, но цели у них разные:

  • Нагрузочный тест — проверка ожидаемой нагрузки: выдержит ли сайт, например, 500 человек одновременно во время акции.
  • Стресс-тест — нагрузка растёт до тех пор, пока сайт не начнёт отказывать. Так находят предел. Подробнее — в статье о стресс-тесте.
  • Тест на всплеск — резкий рост за минуту, как после рассылки или выхода рекламы на ТВ.
  • Длительный тест — умеренная нагрузка в течение часов, чтобы найти утечки памяти и переполнение диска.

Для большинства сайтов малого и среднего бизнеса достаточно первых трёх.

Какие цифры смотреть в результатах

  • Время ответа, 95-й процентиль (p95). Время, за которое открываются 95 % страниц. Среднее значение обманчиво: оно может быть хорошим, даже если каждый двадцатый посетитель ждёт 10 секунд.
  • Доля ошибок. Ответы 5xx, обрывы соединения, таймауты. Больше 1–2 % под нагрузкой — уже повод разбираться.
  • Запросы в секунду. Сколько обращений сайт обрабатывает. Если нагрузка растёт, а это число перестаёт расти, сайт упёрся в предел.
  • Точка деградации. Число одновременных посетителей, после которого время ответа начинает резко расти. Это и есть практическая «вместимость» сайта.

Почему виртуальный посетитель — не то же самое, что человек

Живой человек открывает страницу и читает её 20–40 секунд. Программа в тесте делает паузу 1–3 секунды и сразу открывает следующую. Поэтому 100 виртуальных посетителей создают нагрузку, как несколько сотен или тысяча реальных. Хороший отчёт пересчитывает результат в понятные величины: «столько человек на сайте одновременно», «столько визитов в час», — иначе цифры легко неправильно понять.

Как провести тест: три способа

1. Самостоятельно, инструментами для инженеров

JMeter, k6, Gatling, Yandex.Tank — бесплатные и мощные. Но нужно написать сценарий, поднять отдельный сервер для генерации нагрузки (с ноутбука не получится — упрётся в домашний канал), а потом разобраться в графиках. Это работа на день-два для разработчика, который уже знает инструмент.

2. Заказать у подрядчика

Подходит для крупных проектов со сложными сценариями: оформление заказа, личный кабинет, интеграции. Стоит от нескольких десятков тысяч рублей и занимает от недели.

3. Онлайн-сервисом

Сервис сам находит страницы сайта, строит сценарий посетителя, генерирует нагрузку со своих серверов и выдаёт отчёт. Так работает НагрузкаПро: вы выбираете ситуацию — обычный пик, рекламная кампания, распродажа или поиск предела, — а через 5–10 минут получаете вывод простыми словами и список того, что улучшить.

Как не навредить сайту во время теста

  • Запускайте тест ночью или в часы с минимальным трафиком: нагрузка теста добавляется к настоящим посетителям.
  • Увеличивайте нагрузку плавно, а не сразу на максимум.
  • Используйте автоматическую остановку: если сайт начал массово отвечать ошибками или открывать страницы дольше 10 секунд, тест должен сам снять нагрузку. В НагрузкаПро это включено всегда.
  • Предупредите хостинг, если у него есть защита от DDoS: она может принять тест за атаку и заблокировать адреса генератора.
  • Тестируйте только свои сайты. Нагрузка на чужой сайт без разрешения владельца — нарушение закона, поэтому сервисы требуют подтвердить права на домен.

Что делать с результатом

Если сайт держит ожидаемую нагрузку с запасом в 1,5–2 раза — можно спокойно запускать акцию. Если нет, чаще всего помогают три вещи: кэширование страниц, отдача статики через CDN или отдельный веб-сервер и тариф хостинга с большим числом процессов. Подробный разбор — в статье почему сайт тормозит при наплыве посетителей. После исправлений повторите тест и сравните результаты: так видно, что изменение действительно помогло.

Частые вопросы

Сколько стоит нагрузочное тестирование сайта?

Проверка на подрядчика с JMeter обычно стоит от нескольких десятков тысяч рублей: инженер пишет сценарий и разбирает результаты. Онлайн-сервис делает типовую проверку сам — у НагрузкаПро во время беты она бесплатна.

Можно ли тестировать сайт, который уже работает?

Да, но в часы минимального трафика: тест добавляет нагрузку к настоящим посетителям. Хороший тест растит нагрузку постепенно и останавливается сам, если сайт начинает отказывать.

Как часто проводить нагрузочное тестирование?

Перед каждым крупным событием (распродажа, реклама, запуск), после смены хостинга или большой доработки и регулярно — например, раз в месяц, чтобы заметить, что сайт стал медленнее.

Ещё по теме