15 апреля 2026Евгений · Senior Systems Engineer

Как провести стресс-тест сайта самостоятельно и понять, когда он упадет?


Представьте классический кошмар владельца бизнеса: вы выделили 5 миллионов рублей на масштабную рекламную кампанию у топовых блогеров. Трафик льется рекой, заявки должны бить рекорды. Но вместо потока клиентов вы получаете шквал гневных сообщений, а на месте вашего интернет-магазина красуется белая страница с надписью «503 Service Unavailable» или «502 Bad Gateway». Бюджет сгорел, репутация испорчена, клиенты ушли к конкурентам.

Чтобы этого не допустить, нужно заранее знать предел прочности вашего ресурса. В этой статье инженеры NineLab подробно расскажут, что такое нагрузочное тестирование, почему сайты вообще «падают» и как провести базовый стресс-тест своими руками.

Сервер под нагрузкой во время стресс-теста

Что такое стресс-тест и чем он отличается от нагрузочного тестирования?

Многие путают эти два понятия:

  • Нагрузочное тестирование (Load Testing): мы проверяем, как сайт справляется с ожидаемым количеством пользователей. Например, мы знаем, что в Черную Пятницу придет 5 000 человек в час, и смотрим, не будет ли тормозов.
  • Стресс-тестирование (Stress Testing): мы намеренно «заливаем» сайт трафиком до тех пор, пока он не сломается. Наша задача — найти ту самую точку отказа (bottleneck) и посмотреть, как именно система «умирает» (и, что важнее, как быстро она восстанавливается после).

Важное правило: никогда не проводите стресс-тест на рабочей (production) базе в часы пик. В идеале для тестов должна быть развернута точная копия вашего сайта (staging-окружение).

Почему вообще падают сайты? 3 узких горлышка архитектуры

Бизнесу часто кажется, что сайт падает, потому что «не хватает сервера» или «мало оперативной памяти». На практике в 90% случаев проблема кроется глубже:

  1. База данных не справляется с очередью (Locks): Десять пользователей одновременно пытаются сформировать корзину. База данных начинает блокировать записи, чтобы избежать конфликтов. Одиннадцатый пользователь ждет своей очереди и отваливается по таймауту.
  2. Лимит подключений к веб-серверу: Ваш Nginx или Apache настроен на одновременную обработку 500 соединений (максимум воркеров). 501-й пользователь просто не сможет подключиться и получит ошибку 502 или 504.
  3. Отсутствие кэширования: Когда 10 000 человек заходят на главную страницу, сервер вынужден каждый раз заново генерировать ее с нуля, запрашивая меню, каталог и цены из базы данных. Это загружает процессор до 100% за считанные секунды.

Инструменты для самостоятельного тестирования

Если вы хотите получить лишь общее представление о надежности, не обязательно быть DevOps-инженером (о том, какие метрики мониторинга использовать, мы писали ранее). Существуют простые утилиты и облачные сервисы для генерации синтетической нагрузки.

1. k6 Cloud / Grafana k6

Один из самых современных инструментов от Grafana Labs. Базовый сценарий пишется на JavaScript. Сервис удобен тем, что имеет облачную версию (позволяет эмулировать реальный разброс пользователей по всему миру) и выдает красивые, понятные графики времени отклика и отказов.

2. Apache Benchmark (ab)

Классическая консольная утилита, которая поставляется вместе с веб-сервером Apache. Идеальна для быстрых и грубых проверок. Программа настолько популярна, что на MacOS или Linux (Ubuntu) она уже установлена по умолчанию.

ab -n 1000 -c 100 https://vash-sayt.ru/

Где -n 1000 — это общее количество запросов, а -c 100 — количество одновременных подключений.

В отчете нас прежде всего интересуют параметры:

  • Failed requests: если здесь не 0, значит, ваш сервер уже не переварил даже эту небольшую нагрузку.
  • Requests per second (RPS): сколько реальных запросов в секунду способен отдавать ваш сервер.

3. Yandex.Tank (Яндекс.Танк)

Более серьезная "артиллерия" от Яндекса. Это мощный инструмент для высоконагруженных систем, который умеет агрегировать отчеты по перцентилям. Однако для его тонкой настройки уже понадобится базовая техническая экспертиза.

3 фатальные ошибки при самостоятельном тестировании

Если вы решили обойтись своими силами, остерегайтесь ловушек, которые сделают результаты вашей проверки бесполезными:

  1. Тестирование статичных страниц. Тестировать главную страницу или старую статью в блоге бессмысленно — скорее всего их мгновенно отдаст система кэширования (или CDN). Проверять нужно самые «тяжелые» и динамические маршруты: внутренний поиск по каталогу, добавление товаров в корзину или оформление заказа.
  2. Стрельба из одной точки. Если вы запустите скрипт со своего ноутбука через офисный Wi-Fi, вы протестируете пропускную способность своего роутера, а не сервера. Правильные тесты запускаются с распределенных мощных серверов.
  3. Игнорирование сценариев (User Flow). Реальный покупатель не заходит на сайт 10 000 раз в секунду. Он открывает каталог, кликает параметры, кладет товар "в корзину". Хороший стресс-тест всегда имитирует реалистичные шаги пользователя.

Анализ результатов: что делать дальше?

Вы запустили нагрузку и увидели ошибку. Сайт упал. Что делать?

Самостоятельный тест ответит на вопрос «упадем ли мы?». Но он никогда не ответит на вопросы «ПОЧЕМУ мы упали?» и «КАК это исправить?».

Если система сложилась под трафиком, это далеко не всегда означает, что вам нужно срочно покупать железо за полмиллиона рублей в месяц. Возможно, вам нужно просто поднять Redis для кэширования агрегации фильтров. Или переписать один медленный SQL-запрос, который блокирует остальные таблицы. А при серьезных амбициях — переработать архитектуру-монолит, внедрив микросервисы и балансировщики нагрузки (как в нашем кейсе по высоконагруженной реферальной системе).

NineLab специализируется на проектировании отказоустойчивых (high-load) инфраструктур. Мы не ограничиваемся простой отправкой ботов на сайт. Мы проводим глубокий технический аудит узких мест, выстраиваем геораспределенную инфраструктуру и оптимизируем узлы так, чтобы ваш ресурс выдержал даже самые вирусные рекламные кампании. Не рискуйте бизнесом перед важным релизом — доверьте стабильность бренда инженерам.

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

Профиль трафика и данные на стенде редко совпадают с боем. Нужны сценарии, те же метрики, что в проде, и поэтапное наращивание с возможностью отката.

Часто первыми «краснеют» база и планы запросов, пулы соединений, синхронные вызовы внешних API и очереди — это даёт быстрый чек-лист проверки.

Не обязательно: инвалидация, холодный старт и неравномерность ключей могут навредить. Кэш проектируют под конкретные read-модели и SLO.

Когда вертикальное масштабирование и оптимизация запросов упёрлись в потолок, а рост данных предсказуем по ключу партиционирования.

Хотите применить это на практике?

Расскажите про вашу систему — предложим план работ и метрики, которые имеет смысл зафиксировать в SLA/SLO.

Все материалы: High-Load

High-Load31 мая 2026 г.
Микросервисы для маркетплейса: когда это необходимость, а когда — лишние миллионы

Рамка решения для CEO и CTO: 5 сигналов, что пора дробить систему, 4 признака преждевременного перехода и честный расчёт — сколько стоит «архитектура как у Ozon» на старте маркетплейса.

Читать статью
High-Load21 мая 2026 г.
Redis, очереди и кэширование: как сделать сайт в 10 раз быстрее без покупки нового железа

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

Читать статью
High-Load19 мая 2026 г.
Сколько стоит 1 час простоя вашего сайта: считаем на конкретных примерах

Формула расчёта стоимости простоя для e-commerce, B2B и SaaS: прямые и скрытые потери, коэффициент пика и чеклист подготовки к инцидентам. С привязкой к реальным сбоям инфраструктуры в 2026 году.

Читать статью
High-Load17 мая 2026 г.
Реклама на 10 миллионов и ошибка 503: как техническая неготовность сжигает маркетинговые бюджеты

Разбираем, почему рекламные кампании сгорают из-за упавшего сайта: считаем реальные потери, объясняем три системные причины и даём чеклист подготовки инфраструктуры перед крупным запуском.

Читать статью