← Все статьи
High-load · 10.11.2026 · 10 мин

502 и 504 на checkout: что делать

Почему оформление заказа падает с ошибками 502 и 504, что проверить в первые минуты и как защитить checkout от повторения.

502 и 504 на checkout: что делать

502 и 504 на checkout — это не просто техническая ошибка. В этот момент покупатель уже выбрал товар, заполнил данные и готов платить. Если страница не отвечает, он уходит, а магазин теряет самый дорогой трафик.

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

Что означают 502 и 504

502 Bad Gateway

Прокси или веб-сервер не получил корректный ответ от приложения. Часто это PHP-FPM, упавший процесс или ошибка в коде.

504 Gateway Timeout

Приложение не ответило вовремя. Причины: медленная база, внешний сервис, тяжёлый запрос или нехватка воркеров.

Обе ошибки могут выглядеть одинаково для пользователя, но лечатся по-разному. Поэтому сначала нужно понять, где именно обрывается цепочка: веб-сервер, PHP, база или внешний сервис.

Почему падает именно checkout

  • Checkout делает больше запросов, чем каталог: цены, скидки, доставка, оплата.
  • Внешние сервисы отвечают медленно или недоступны.
  • Синхронные вызовы 1С и CRM блокируют запрос.
  • Сессии и корзина хранятся в файлах или на одном сервере.
  • Нет резервирования и деградации при отказе оплаты.
  • Пиковый трафик совпал с выгрузкой или отчётом.

Первые 15 минут

1
Зафиксируйте симптом

Какие шаги падают, с какого времени, у всех или у части пользователей. Проверьте воспроизводимость.

2
Посмотрите логи

Ошибки PHP-FPM, Nginx, приложения и базы. Найдите время первого сбоя и повторяющийся паттерн.

3
Проверьте ресурсы

CPU, память, диск, количество соединений и воркеров. Возможно, закончилось место или процессы упираются в лимит.

4
Проверьте внешние сервисы

Оплата, доставка, 1С, CRM. Если они недоступны, checkout не должен ждать их бесконечно.

5
Снимите лишнюю нагрузку

Отключите тяжёлые блоки, фоновые задачи и необязательные отчёты, чтобы освободить ресурсы.

Где смотреть

  • Логи Nginx и PHP-FPM: таймауты, 502, 504.
  • Медленный лог базы: запросы дольше порога.
  • Очереди: длина, задержка, ошибки.
  • Мониторинг: 95-й и 99-й перцентиль времени ответа.
  • Логи платёжной системы и доставки.
  • Журнал изменений: что выкатили перед сбоем.

Быстрые действия

  • Увеличьте таймауты, если запросы завершаются, но не успевают.
  • Ограничьте параллелизм внешних вызовов.
  • Включите кэш там, где это безопасно.
  • Отключите необязательные виджеты и отчёты.
  • При необходимости ограничьте рекламный трафик.
  • Сообщите пользователям, что происходит, вместо бесконечной загрузки.

Что не делать

  • Перезагружать сервер без сбора фактов.
  • Увеличивать все таймауты подряд.
  • Отключать логи, чтобы «стало быстрее».
  • Менять несколько настроек одновременно.
  • Тестировать исправления на живом checkout.

Как защитить checkout

Устойчивость checkout строится заранее. Нужны таймауты, очередь, деградация и понятные сообщения. Если оплата недоступна, пользователь должен понимать, что делать, а не видеть белый экран.

✓ Внешние вызовы имеют таймауты и не блокируют запрос бесконечно.
✓ Тяжёлые операции вынесены в очередь.
✓ Есть запас по воркерам и соединениям с базой.
✓ Сессии и корзина не зависят от одного сервера.
✓ Мониторинг следит за 5xx и временем ответа.
✓ Есть план отключения второстепенных функций.
✓ Checkout протестирован под нагрузкой.
✓ Пользователю показывается понятная ошибка.

После восстановления

Когда сайт снова отвечает, не останавливайтесь на «заработало». Найдите корневую причину, проверьте, не потерялись ли заказы, и добавьте проверку, которая поймает повторение раньше пользователей.

  • Сверьте заказы и оплаты за период сбоя.
  • Проверьте очередь и зависшие операции.
  • Обновите мониторинг и алерты.
  • Зафиксируйте причину и действия в отчёте.
  • Добавьте проверку в релизный чек-лист.

Типичные ошибки

  • Искать причину только в приложении, забыв про базу и сеть.
  • Считать, что 504 лечится только увеличением таймаута.
  • Не проверять внешние сервисы.
  • Не сообщать пользователям о проблеме.
  • Не разбирать инцидент после восстановления.

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

Нагрузочный тест checkout

Проверять checkout нужно отдельно от каталога. Именно там больше запросов, внешних вызовов и меньше права на ошибку.

  • Смоделируйте добавление в корзину и оформление заказа.
  • Проверьте оплату и доставку на тестовых данных.
  • Увеличивайте нагрузку постепенно.
  • Следите за ошибками, временем ответа и очередью.
  • Тестируйте на копии, а не на живом магазине.

Мониторинг и алерты

Ошибку нужно замечать раньше покупателя. Для этого недостаточно смотреть на графики раз в день.

  • Доля 5xx по checkout.
  • 95-й и 99-й перцентиль времени ответа.
  • Очередь и время обработки.
  • Ошибки оплат и внешних сервисов.
  • Заказы без статуса.
  • Доступность базы и соединения.

План деградации

Если внешний сервис недоступен, checkout должен не падать целиком, а предложить понятный сценарий. Например, сохранить заказ и предложить оплатить позже.

✓ Тяжёлые блоки можно отключить без релиза.
✓ Оплата и доставка имеют таймауты.
✓ Пользователь видит понятное сообщение.
✓ Заказ сохраняется при сбое платежа.
✓ Есть очередь для повторной обработки.
✓ Команда знает, кто принимает решение.

Разбор инцидента

После восстановления нужен короткий отчёт: что произошло, какая причина, что сделали и какие проверки добавили. Без этого инцидент повторится.

  • Время начала и окончания сбоя.
  • Симптомы и затронутые сценарии.
  • Корневая причина.
  • Действия команды и их результат.
  • Изменения в архитектуре и мониторинге.

Что проверить в конфигурации

Часть ошибок лечится настройками, а не кодом. Проверьте лимиты, таймауты и количество процессов — но меняйте по одному параметру, чтобы понимать эффект.

✓ Таймауты PHP-FPM и прокси согласованы.
✓ Воркеров хватает под пиковую нагрузку.
✓ Соединения к базе не исчерпываются.
✓ Диск не заполнен, логи не растут бесконечно.
✓ Внешние вызовы имеют таймауты.
✓ Очередь не блокирует checkout.
✓ Кэш не отдаёт устаревшие цены.
✓ Мониторинг видит 5xx и время ответа.

Коммуникация с пользователями

Во время сбоя важно не только починить сайт, но и объяснить ситуацию. Молчание и бесконечная загрузка раздражают сильнее, чем понятное сообщение с альтернативой.

  • Покажите понятную страницу ошибки.
  • Предложите позвонить или написать.
  • Сохраните корзину и данные.
  • Сообщите, когда проблема будет решена.

Что делать с базой

Если checkout ждёт базу, ошибка 504 появляется даже при свободном CPU. Проверьте активные запросы, блокировки и соединения.

  • Найдите запросы без индексов и долгие транзакции.
  • Проверьте лимит соединений и пул.
  • Уберите тяжёлые отчёты из пикового времени.
  • Ограничьте параллельные операции.

Отдельно проверьте поведение при отказе платежей. Если платёжный сервис недоступен, checkout не должен висеть до таймаута. Сохраните заказ и предложите альтернативный способ оплаты.

Если ошибка повторяется регулярно, она перестаёт быть инцидентом и становится дефектом архитектуры. В этом случае нужен не разовый фикс, а изменение схемы: очередь, таймауты и разгрузка checkout.

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

Проверим устойчивость checkout

Посмотрим ошибки, таймауты, очередь и внешние сервисы. Предложим план защиты от повторения.

Обсудить задачу →

Вопросы и ответы

Чем 502 отличается от 504? +

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

Почему ошибка появляется только на checkout? +

Checkout делает больше запросов и обращается к внешним сервисам. Если оплата, доставка или 1С отвечают медленно, именно этот шаг падает первым.

Поможет ли увеличение таймаута? +

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

Что делать в первую очередь? +

Собрать факты: логи, метрики, время сбоя, внешние сервисы. Затем снять лишнюю нагрузку и защитить checkout от бесконечных ожиданий.

Нужно ли останавливать рекламу? +

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

Как понять, что заказы не потерялись? +

Сверьте заказы и платежи за период сбоя, проверьте очередь и статусы. Если операция не завершилась, она должна быть в журнале для повторной обработки.

Можно ли предотвратить 502 и 504? +

Полностью — нет, но можно снизить риск: таймауты, очередь, кэш, мониторинг, нагрузочные тесты и план деградации.

Что важнее исправить после инцидента? +

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

Как быстро должен отвечать checkout? +

Ориентир — до двух-трёх секунд на основных шагах при нормальной нагрузке. Внешние вызовы не должны задерживать ответ дольше таймаута.

Нужен ли отдельный сервер для checkout? +

Обычно нет. Сначала проверяют кэш, очередь, базу и внешние сервисы. Отдельный контур оправдан при очень высокой нагрузке.

Можно ли кэшировать checkout? +

Страницу целиком — нет, там персональные данные и цены. Можно кэшировать справочники, тарифы и второстепенные блоки, но с осторожной инвалидацией.

Почему 502 появляется только у части пользователей? +

Возможно, проблема на одном сервере за балансировщиком, в регионе или у конкретного внешнего сервиса. Смотрите логи по узлам и сегментам.

Поможет ли балансировщик? +

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

Что делать, если ошибка возникает на оплате? +

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

Нужен ли синтетический мониторинг checkout? +

Да. Регулярная проверка сценария оформления помогает заметить ошибку до того, как её увидят покупатели.