504 Gateway Timeout 5 минут на чтение

Ошибка 504 Gateway Timeout

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

Частые причины

  • Медленный запрос к базе данных: блокировки, отсутствие индексов, тяжёлая аналитика.
  • Внешний API отвечает дольше таймаута — платёжка, доставка, геосервис.
  • Исчерпание пула соединений или воркеров.
  • Тяжёлый отчёт или экспорт выполняется синхронно в веб-запросе.

Диагностика

  1. Найдите в логах медленные запросы: время выполнения и URL.
  2. Проверьте pg_stat_activity / SHOW PROCESSLIST на блокировки.
  3. Сопоставьте 504 с конкретными страницами: часто это поиск, фильтры, отчёты.
  4. Проверьте таймауты nginx, PHP и балансировщика — они должны быть согласованы.

Как исправить

КтоДействие
Владелец сайтаОпределите страницы, на которых возникает ошибка, и передайте разработчику вместе со временем.
РазработчикОптимизируйте запрос, вынесите тяжёлые операции в очередь, добавьте кэш и пагинацию.
АдминистраторУвеличьте таймауты только после устранения причины; настройте отдельные лимиты для долгих операций.

Как не допустить повторения

  • Мониторинг p95 по ключевым страницам и API.
  • Проверка API-эндпоинтов с порогом времени ответа.
  • Сценарий в браузере: оформление заказа должно проходить за отведённое время.

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

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

502 — некорректный ответ upstream, 504 — полное отсутствие ответа за таймаут.

Увеличить таймаут — решение?

Нет, это маскировка: пользователь всё равно ждёт. Сначала оптимизируйте запрос.

Что чаще всего тормозит?

Запросы к БД без индексов и синхронные вызовы внешних API.