Падение магазина под нагрузкой всегда выглядит одинаково: 502 или 504, бесконечная загрузка, пустые категории и клиенты, которые уходят к конкурентам. В первые минуты важно не гадать, а быстро собрать факты.
Первые 60 минут: что смотреть
- Метрики сервера: CPU, память, диск, сеть, количество соединений.
- Логи PHP-FPM, Nginx и приложения: ошибки, таймауты, медленные запросы.
- База данных: активные запросы, блокировки, соединения, медленный лог.
- Очереди и cron: не запустились ли тяжёлые задачи одновременно с пиком.
- Внешние интеграции: 1С, CRM, платежи и доставка — не тормозят ли они запросы.
7 типичных причин
- Нет кэша. Каждая страница собирается заново, хотя каталог меняется раз в час.
- N+1 запросы. Карточка товара делает десятки запросов вместо двух-трёх.
- Отсутствуют индексы. Листинги и фильтры сканируют всю таблицу.
- Синхронные интеграции. Выгрузка в 1С или проверка остатков выполняется прямо в запросе.
- Сессии и кэш в файлах. На нескольких серверах файловый кэш не работает, а диск становится узким местом.
- Лимиты PHP-FPM. Мало воркеров или слишком маленький timeout — запросы встают в очередь.
- Пересечение cron и трафика. Ночная выгрузка «съехала» на день и совпала с рекламной кампанией.
Как отличить рост трафика от деградации
Если нагрузка выросла, а время ответа осталось прежним — это нормальный рост. Если время ответа растёт быстрее трафика, где-то появилось узкое место: база, диск, блокировки или внешний сервис. Смотрите не на средние значения, а на 95-й и 99-й перцентиль — именно они показывают, что чувствуют реальные покупатели.
Добавление CPU помогает не всегда. Если узкое место — блокировки базы или медленный диск, новый сервер просто будет быстрее ждать. Сначала найдите причину.
Нагрузочный тест: как не навредить
- Снимайте тест на копии продакшена, а не на живом магазине.
- Начинайте с малой нагрузки и увеличивайте постепенно.
- Смоделируйте реальные сценарии: каталог, карточка, поиск, корзина, checkout.
- Следите за ошибками, временем ответа и ресурсами, а не только за количеством запросов в секунду.
Что делать после стабилизации
Когда сайт снова отвечает, не останавливайтесь на «перезагрузили и заработало». Нужно найти корневую причину, добавить алерты, вынести тяжёлые задачи в очередь и повторить тест. Иначе следующая рекламная кампания снова приведёт к тому же результату.