502 и 504 на checkout — это не просто техническая ошибка. В этот момент покупатель уже выбрал товар, заполнил данные и готов платить. Если страница не отвечает, он уходит, а магазин теряет самый дорогой трафик.
Ниже — что означают эти ошибки, где искать причину в первые минуты и как сделать checkout устойчивее, чтобы ситуация не повторилась.
Что означают 502 и 504
Прокси или веб-сервер не получил корректный ответ от приложения. Часто это PHP-FPM, упавший процесс или ошибка в коде.
Приложение не ответило вовремя. Причины: медленная база, внешний сервис, тяжёлый запрос или нехватка воркеров.
Обе ошибки могут выглядеть одинаково для пользователя, но лечатся по-разному. Поэтому сначала нужно понять, где именно обрывается цепочка: веб-сервер, PHP, база или внешний сервис.
Почему падает именно checkout
- Checkout делает больше запросов, чем каталог: цены, скидки, доставка, оплата.
- Внешние сервисы отвечают медленно или недоступны.
- Синхронные вызовы 1С и CRM блокируют запрос.
- Сессии и корзина хранятся в файлах или на одном сервере.
- Нет резервирования и деградации при отказе оплаты.
- Пиковый трафик совпал с выгрузкой или отчётом.
Первые 15 минут
Какие шаги падают, с какого времени, у всех или у части пользователей. Проверьте воспроизводимость.
Ошибки PHP-FPM, Nginx, приложения и базы. Найдите время первого сбоя и повторяющийся паттерн.
CPU, память, диск, количество соединений и воркеров. Возможно, закончилось место или процессы упираются в лимит.
Оплата, доставка, 1С, CRM. Если они недоступны, checkout не должен ждать их бесконечно.
Отключите тяжёлые блоки, фоновые задачи и необязательные отчёты, чтобы освободить ресурсы.
Где смотреть
- Логи Nginx и PHP-FPM: таймауты, 502, 504.
- Медленный лог базы: запросы дольше порога.
- Очереди: длина, задержка, ошибки.
- Мониторинг: 95-й и 99-й перцентиль времени ответа.
- Логи платёжной системы и доставки.
- Журнал изменений: что выкатили перед сбоем.
Быстрые действия
- Увеличьте таймауты, если запросы завершаются, но не успевают.
- Ограничьте параллелизм внешних вызовов.
- Включите кэш там, где это безопасно.
- Отключите необязательные виджеты и отчёты.
- При необходимости ограничьте рекламный трафик.
- Сообщите пользователям, что происходит, вместо бесконечной загрузки.
Что не делать
- Перезагружать сервер без сбора фактов.
- Увеличивать все таймауты подряд.
- Отключать логи, чтобы «стало быстрее».
- Менять несколько настроек одновременно.
- Тестировать исправления на живом checkout.
Как защитить checkout
Устойчивость checkout строится заранее. Нужны таймауты, очередь, деградация и понятные сообщения. Если оплата недоступна, пользователь должен понимать, что делать, а не видеть белый экран.
После восстановления
Когда сайт снова отвечает, не останавливайтесь на «заработало». Найдите корневую причину, проверьте, не потерялись ли заказы, и добавьте проверку, которая поймает повторение раньше пользователей.
- Сверьте заказы и оплаты за период сбоя.
- Проверьте очередь и зависшие операции.
- Обновите мониторинг и алерты.
- Зафиксируйте причину и действия в отчёте.
- Добавьте проверку в релизный чек-лист.
Типичные ошибки
- Искать причину только в приложении, забыв про базу и сеть.
- Считать, что 504 лечится только увеличением таймаута.
- Не проверять внешние сервисы.
- Не сообщать пользователям о проблеме.
- Не разбирать инцидент после восстановления.
502 и 504 на checkout почти всегда имеют конкретную причину. Чем быстрее вы соберёте факты и чем лучше подготовлена деградация, тем меньше заказов потеряется.
Нагрузочный тест checkout
Проверять checkout нужно отдельно от каталога. Именно там больше запросов, внешних вызовов и меньше права на ошибку.
- Смоделируйте добавление в корзину и оформление заказа.
- Проверьте оплату и доставку на тестовых данных.
- Увеличивайте нагрузку постепенно.
- Следите за ошибками, временем ответа и очередью.
- Тестируйте на копии, а не на живом магазине.
Мониторинг и алерты
Ошибку нужно замечать раньше покупателя. Для этого недостаточно смотреть на графики раз в день.
- Доля 5xx по checkout.
- 95-й и 99-й перцентиль времени ответа.
- Очередь и время обработки.
- Ошибки оплат и внешних сервисов.
- Заказы без статуса.
- Доступность базы и соединения.
План деградации
Если внешний сервис недоступен, checkout должен не падать целиком, а предложить понятный сценарий. Например, сохранить заказ и предложить оплатить позже.
Разбор инцидента
После восстановления нужен короткий отчёт: что произошло, какая причина, что сделали и какие проверки добавили. Без этого инцидент повторится.
- Время начала и окончания сбоя.
- Симптомы и затронутые сценарии.
- Корневая причина.
- Действия команды и их результат.
- Изменения в архитектуре и мониторинге.
Что проверить в конфигурации
Часть ошибок лечится настройками, а не кодом. Проверьте лимиты, таймауты и количество процессов — но меняйте по одному параметру, чтобы понимать эффект.
Коммуникация с пользователями
Во время сбоя важно не только починить сайт, но и объяснить ситуацию. Молчание и бесконечная загрузка раздражают сильнее, чем понятное сообщение с альтернативой.
- Покажите понятную страницу ошибки.
- Предложите позвонить или написать.
- Сохраните корзину и данные.
- Сообщите, когда проблема будет решена.
Что делать с базой
Если checkout ждёт базу, ошибка 504 появляется даже при свободном CPU. Проверьте активные запросы, блокировки и соединения.
- Найдите запросы без индексов и долгие транзакции.
- Проверьте лимит соединений и пул.
- Уберите тяжёлые отчёты из пикового времени.
- Ограничьте параллельные операции.
Отдельно проверьте поведение при отказе платежей. Если платёжный сервис недоступен, checkout не должен висеть до таймаута. Сохраните заказ и предложите альтернативный способ оплаты.
Если ошибка повторяется регулярно, она перестаёт быть инцидентом и становится дефектом архитектуры. В этом случае нужен не разовый фикс, а изменение схемы: очередь, таймауты и разгрузка checkout.
После сбоя обязательно проверьте, не потерялись ли заказы и оплаты. Даже если сайт снова работает, часть операций могла остаться в промежуточном состоянии. Это займёт немного времени, но поможет избежать жалоб и расхождений в отчётах.
Посмотрим ошибки, таймауты, очередь и внешние сервисы. Предложим план защиты от повторения.
Обсудить задачу →