504 Gateway Timeout
5 минут на чтение
Ошибка 504 Gateway Timeout
Прокси или балансировщик не дождался ответа от приложения за отведённое время. Сайт жив, но конкретный запрос выполняется слишком долго.
Частые причины
- Медленный запрос к базе данных: блокировки, отсутствие индексов, тяжёлая аналитика.
- Внешний API отвечает дольше таймаута — платёжка, доставка, геосервис.
- Исчерпание пула соединений или воркеров.
- Тяжёлый отчёт или экспорт выполняется синхронно в веб-запросе.
Диагностика
- Найдите в логах медленные запросы: время выполнения и URL.
- Проверьте pg_stat_activity / SHOW PROCESSLIST на блокировки.
- Сопоставьте 504 с конкретными страницами: часто это поиск, фильтры, отчёты.
- Проверьте таймауты nginx, PHP и балансировщика — они должны быть согласованы.
Как исправить
| Кто | Действие |
|---|---|
| Владелец сайта | Определите страницы, на которых возникает ошибка, и передайте разработчику вместе со временем. |
| Разработчик | Оптимизируйте запрос, вынесите тяжёлые операции в очередь, добавьте кэш и пагинацию. |
| Администратор | Увеличьте таймауты только после устранения причины; настройте отдельные лимиты для долгих операций. |
Как не допустить повторения
- Мониторинг p95 по ключевым страницам и API.
- Проверка API-эндпоинтов с порогом времени ответа.
- Сценарий в браузере: оформление заказа должно проходить за отведённое время.
Частые вопросы
Чем 504 отличается от 502?
502 — некорректный ответ upstream, 504 — полное отсутствие ответа за таймаут.
Увеличить таймаут — решение?
Нет, это маскировка: пользователь всё равно ждёт. Сначала оптимизируйте запрос.
Что чаще всего тормозит?
Запросы к БД без индексов и синхронные вызовы внешних API.