Gateway Timeout

Диагностика и исправление ошибки 504 на сайте

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

Цепочка ответа

Где теряется
время запроса

RFC 9110 определяет 504 как ситуацию, когда сервер в роли шлюза или прокси не получил своевременный ответ от upstream-сервера. Код указывает на границу сбоя, но не на медленную функцию: её находим по времени каждого этапа.

01

Шлюз и прокси

Сверяем журналы Nginx, балансировщика или CDN, upstream-адрес, время соединения, ответа и общий лимит ожидания.

02

Приложение

Ищем долгий обработчик, занятые воркеры, блокировку, зависшую фоновую задачу или исчерпанный пул соединений.

03

База данных

Проверяем медленные запросы, блокировки, индексы, число подключений и отличие проблемной операции от обычной.

04

Внешние сервисы

Измеряем DNS, соединение и ответ API, платёжного модуля, CRM, поиска или другого обязательного компонента.

05

Ресурсы и очередь

Сопоставляем 504 с CPU, памятью, диском, очередями, числом запросов и временем ожидания свободного воркера.

06

Контрольный сценарий

После исправления повторяем проблемное действие и проверяем время на каждом слое, журналы и отсутствие нового тайм-аута.

Результат

Ответ приходит в предсказуемое время

Найдена граница задержки

Понятно, какой компонент не укладывался в допустимое время.

Устранена причина

Оптимизирован запрос, процесс, очередь или вызов зависимости.

Есть ранний сигнал

Время ответа и доля ошибок контролируются до массового сбоя.

Порядок действий

От симптома к медленной операции

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

01

Фиксируем запрос

Записываем URL, действие, точное время, длительность и повторяемость.

02

Сопоставляем журналы

Связываем запись шлюза с запросом приложения, базы и внешней зависимости.

03

Исправляем узкое место

Оптимизируем подтверждённую операцию или безопасно меняем архитектуру её выполнения.

04

Проверяем пределы

Повторяем сценарий и настраиваем наблюдение за временем ответа.

Ограничение

Большой тайм-аут не равен исправлению

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

Для диагностики подготовьте

  • URL и действие, которое вызывает 504;
  • точное время и частоту ошибки;
  • сведения о прокси, CMS и сервере;
  • последние изменения и обновления;
  • доступные журналы и метрики.

Не обещаем устранение без доступа к данным: одинаковый код может быть вызван разными участками инфраструктуры.

Вопросы

Перед исправлением

Что означает 504 Gateway Timeout?

Шлюз или прокси не дождался своевременного ответа от следующего сервера в цепочке. Конкретную причину устанавливаем по журналам и времени операций.

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

При 504 ответ не пришёл вовремя. При 502 шлюз получил от upstream некорректный ответ.

Поможет ли увеличить тайм-аут?

Иногда — для ожидаемо долгой операции. Без измерений это может скрыть проблему и увеличить число занятых соединений.

Что нужно для диагностики?

URL, точное время, повторяемый сценарий, журналы шлюза и приложения, метрики базы и зависимостей.

Первый шаг

Покажите ошибку 504

Пришлите URL, время и действие перед сбоем. Определим, какие журналы и метрики нужны для первого проверяемого шага.