Битлента
Ошибки и коды3 мин чтения·

Ошибка 504 Gateway Timeout: вышестоящий сервер не ответил вовремя

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

Ожидание внутри цепочки

Как и в случае 502, этот код выдаёт посредник: промежуточный сервер, балансировщик или сервис ускорения. Он передал запрос дальше, к приложению, и стал ждать. Отведённое время вышло, а ответа так и не последовало, поэтому посреднику пришлось вернуть вам 504.

Ваше соединение с посредником при этом работало нормально: вы получили ответ, пусть и об ошибке. Значит, проблема находится за первым звеном, а не в вашем интернете.

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

Что задерживает ответ

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

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

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

Проверки на стороне посетителя

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

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

Иногда помогает уменьшить объём запроса: если вы запрашиваете отчёт за очень длинный период или загружаете крупный файл, разбейте операцию на несколько частей. Меньшие запросы укладываются в отведённое время и не упираются в ограничения шлюза.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Поиск причины владельцем

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

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

Настройки таймаутов

Увеличение таймаута промежуточного сервера может скрыть симптом, но не устраняет причину. Разумно поднимать лимит только для конкретных адресов с заведомо долгими операциями. Согласуйте значения по всей цепочке: таймаут CDN, балансировщика, веб-сервера и приложения должны идти по нарастающей, иначе верхнее звено сдастся раньше нижнего.

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

Отличие от ERR_CONNECTION_TIMED_OUT

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

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

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
http504таймаутшлюз

Часто задаваемые вопросы

Читайте также