Стресс-тест сайта: как узнать, при какой нагрузке сайт откажет
Обновлено
Нагрузочный тест отвечает на вопрос «выдержит ли сайт столько-то посетителей». Стресс-тест отвечает на другой: сколько вообще выдержит сайт и что произойдёт, когда предел будет превышен. Это знание нужно, чтобы понимать запас прочности: если на акцию ждут 500 человек, а сайт ломается на 600, запаса почти нет.
Чем стресс-тест отличается от нагрузочного
- Нагрузочный тест — проверка конкретного сценария: «500 человек одновременно в течение 10 минут». Результат: выдержал или нет, и с каким временем ответа.
- Стресс-тест — нагрузка растёт постепенно, пока сайт не начнёт отказывать. Результат: точка, где начинаются проблемы, и то, как именно сайт ломается.
Обычно их проводят вместе: сначала ищут предел, потом проверяют, что ожидаемая нагрузка с запасом ниже него.
Как выглядит отказ
Сайты редко «падают» мгновенно. Обычно это происходит в несколько стадий:
- Рост времени ответа. Страницы открываются за 2, потом 4, потом 8 секунд. Ошибок ещё нет, но посетители уже уходят.
- Первые ошибки. Отдельные ответы 502 или 504 — процессы не успевают, часть запросов отваливается по таймауту.
- Массовые отказы. Ответы 503, обрывы соединений; сервер отказывает большинству.
- Восстановление. Когда нагрузка снята, хороший сайт приходит в норму за секунды. Плохой — продолжает отказывать, пока его не перезапустят.
Практический «предел» сайта — это не стадия 3, а начало стадии 1: момент, когда время ответа начинает резко расти. Именно эту точку стоит считать вместимостью сайта.
Как провести стресс-тест безопасно
- Только на своём сайте. Стресс-тест чужого сайта без разрешения — это атака, а не тестирование.
- В часы минимального трафика. На время теста сайт может замедлиться для настоящих посетителей.
- Плавный рост нагрузки. Резкий удар максимумом не покажет, где именно начинаются проблемы.
- Автоматическая остановка. Как только ошибок становится много или страницы открываются дольше 10 секунд, тест должен сам снять нагрузку. Цель — найти предел, а не держать сайт лежащим.
- Предупредите хостинг, если у него есть защита от DDoS, и тех, кто отвечает за сайт, — чтобы никто не начал «чинить» его посреди теста.
В НагрузкаПро для этого есть ситуация «Найти предел»: нагрузка растёт постепенно, а тест останавливается сам, если доля ошибок превысит 15 % или время ответа 95 % запросов дважды подряд будет больше 10 секунд. В отчёте видно, на скольких посетителях начались проблемы и на каких страницах.
Что делать с результатом
- Сравните предел с ожидаемым пиком. Если запас меньше 1,5–2 раз, перед акцией нужно ускорять сайт или увеличивать сервер.
- Посмотрите, какие страницы сдались первыми. Обычно это поиск, фильтры или корзина — их и нужно оптимизировать в первую очередь.
- Проверьте восстановление. Если после снятия нагрузки сайт не вернулся в норму сам, нужно настроить автоматический перезапуск процессов и лимиты памяти.
- Повторите тест после изменений и сравните пределы «до» и «после».
Частые причины низкого предела разобраны в статье почему сайт тормозит при наплыве посетителей.
Для разработчиков: а как же JMeter и k6?
JMeter, k6, Gatling и Yandex.Tank отлично подходят для стресс-тестов, особенно со сложными сценариями: авторизация, оформление заказа, API. Но им нужен отдельный сервер для генерации нагрузки, написанный вручную сценарий и время на разбор результатов. Если нужна быстрая проверка после релиза — проще запустить готовую ситуацию в сервисе, а для регулярных проверок вызвать тест из CI через API.
Частые вопросы
Может ли стресс-тест сломать сайт?
Сайт может временно перестать отвечать, но данные от теста, который только открывает страницы, не пострадают. Важно, чтобы тест сам снимал нагрузку при первых серьёзных ошибках — тогда сайт восстанавливается за секунды.
Чем стресс-тест отличается от DDoS?
Стресс-тест запускает владелец сайта на своём сайте, с плавным ростом и автоматической остановкой. DDoS — атака на чужой сайт без разрешения, её цель — вывести сайт из строя.
Ещё по теме
- Нагрузочное тестирование сайта: зачем, когда и как
Что это такое, какие бывают тесты, какие цифры смотреть и как провести первую проверку за 10 минут.
- Как проверить, выдержит ли интернет-магазин распродажу
Какие страницы магазина падают первыми, сколько посетителей закладывать на акцию и что сделать за неделю до неё.
- Нагрузочное тестирование сайта на 1С-Битрикс
Как проверить сайт на Битриксе под нагрузкой и какие настройки кэша, PHP и MySQL дают больше всего.