Бесплатный разбор
Сайты и SEO

Ошибка 504 Gateway Timeout: что значит, где зависает запрос и как исправить

Что значит 504 Gateway Timeout, чем она отличается от 502 и 503, где искать зависший запрос, какие таймауты менять и что отправить хостингу. С промптами для нейросети.

Коротко. 504 Gateway Timeout означает, что шлюз или прокси не дождался ответа от следующего сервера за отведённое время. Пользователь видит ошибку, а причина может быть в базе, приложении, PHP-FPM, nginx, CDN или внешнем сервисе.

Как читать материал. В каждом разделе два пути: сделать руками и инструментами или подключить нейросеть, которая ускоряет разбор. Третий пункт: проверка. Нейросеть не видит сервер и не измеряет время ответа, поэтому результат проверяем инструментами.

Что означает ошибка 504

504 относится к классу 5xx. Запрос дошёл до шлюза, но ответ от бэкенда не пришёл вовремя. Шлюз перестал ждать и вернул ошибку.

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

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

504, 500, 502 и 503: в чём разница

Код Кто отвечает Что означает Что проверить
500 Приложение или сайт Внутренняя ошибка Логи приложения и веб-сервера
502 Шлюз или прокси Не получил корректный ответ от бэкенда Бэкенд, PHP-FPM, nginx, CDN
503 Сервер Временно недоступен или перегружен Нагрузку, лимиты, обслуживание
504 Шлюз или прокси Не дождался ответа Таймауты, медленные запросы, базу

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

Классический путь. Проверьте статус и время ответа.

curl -I https://example.com/
curl -o /dev/null -s -w "TTFB: %{time_starttransfer}s\n" https://example.com/

С нейросетью. Опишите симптом и попросите разложить цепочку таймаутов.

Сайт отдаёт 504 на странице каталога. Остальные страницы открываются.
Помоги составить план: где мог зависнуть запрос и какие таймауты проверить.
Не предлагай сразу увеличивать все лимиты.

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

Где зависает запрос

Цепочка обычно выглядит так:

браузер → CDN или прокси → nginx → PHP-FPM / приложение → база

Таймаут может сработать на любом участке:

  • CDN не дождался origin;
  • nginx не дождался PHP-FPM или приложения;
  • PHP упёрся в max_execution_time;
  • приложение ждёт внешний API;
  • база выполняет тяжёлый запрос;
  • сервер не хватает памяти или CPU.

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

Схема: цепочка клиент, CDN, nginx, PHP и база; где срабатывает таймаут 504
Схема: 504 возвращает шлюз, когда не дождался ответа. Ищите первый таймаут в цепочке.

Как найти причину

1. Зафиксируйте масштаб

Проверьте:

  • 504 на одной странице или на всём сайте;
  • у всех пользователей или только у вас;
  • постоянно или периодически;
  • что было до ошибки: деплой, рост трафика, обновление, смена CDN.

Сохраните URL, время и код ответа. Если ошибка повторяется, запишите, сколько примерно ждёт браузер до 504.

Пример вывода curl с кодом 504
Проверка кода ответа через curl.

2. Найдите зависший запрос

  • Смотрите логи nginx: upstream timed out, recv() failed, no live upstreams.
  • Смотрите логи PHP: Maximum execution time exceeded.
  • Смотрите медленные запросы базы.
  • Сравните проблемную страницу с соседней.
  • Проверьте, не ждёт ли приложение внешний API.

Если 504 только на одной странице, вероятнее всего, проблема в конкретном запросе или сценарии, а не в сервере целиком.

3. Проверьте таймауты по слоям

  • CDN: свой лимит ожидания origin.
  • nginx: proxy_read_timeout, fastcgi_read_timeout, proxy_connect_timeout.
  • PHP: max_execution_time.
  • База: wait_timeout, лимиты запросов.
  • Внешний API: таймаут клиента и повторные попытки.

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

Классический путь. Посмотрите ошибки nginx и PHP.

tail -n 100 /var/log/nginx/error.log
grep -i "timed out\|504\|upstream" /var/log/nginx/error.log | tail -n 50

С нейросетью. Передайте очищенный фрагмент лога.

Вот фрагмент лога с ошибкой 504. Определи, на каком слое сработал таймаут,
и предложи три проверки. Не придумывай строки, которых нет.
Я удалил IP и токены.

Проверка. Подтвердите гипотезу логом, профилем запроса или тестом на staging.

4. Проверьте последние изменения

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

5. Найдите медленный участок

  • Профилировщик приложения.
  • Логи медленных запросов базы.
  • APM или встроенные метрики хостинга.
  • Тест на staging с тем же сценарием.
  • Сравнение с соседней страницей, которая работает.

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

Разбор проекта

Проверим сайт за вас

Посмотрим ошибки, таймауты и логи, скажем, что исправлять первым. 20–30 минут в Zoom, Telegram или по телефону. Бесплатно.

Разобрать проект

Как исправить по причинам

Причина Что делать Проверка
Медленный запрос к базе Индекс, оптимизация, кеш Время запроса снизилось
Тяжёлый сценарий в коде Профилирование и оптимизация Страница отвечает без 504
Мало памяти или CPU Проверить ресурсы и лимиты Нагрузка в норме
Короткий таймаут nginx Поднять после диагностики Нет upstream timed out
Долгий внешний API Таймаут, кеш, резервный сценарий Сайт не ждёт API бесконечно
CDN не дождался origin Проверить origin и лимит CDN CDN получает ответ вовремя
Блокирующий цикл Исправить код Запрос завершается
Перегрузка Кеш, очередь, ресурсы Время ответа стабильно

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

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

Таймаут — это предохранитель. Он говорит: «мы ждали слишком долго». Если поднять лимит, пользователь будет ждать дольше, а нагрузка на сервер вырастет: зависшие запросы займут процессы и соединения.

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

Что отправить хостингу

  • Приложите URL и время с часовым поясом.
  • Укажите код ответа и время ожидания.
  • Добавьте фрагмент лога nginx или PHP без паролей и токенов.
  • Опишите, на каких страницах ошибка.
  • Перечислите изменения за последние сутки.
  • Уточните, есть ли CDN, WAF или внешний API.
  • Напишите, воспроизводится ли ошибка на всех устройствах.

Частые ошибки

  • Сразу поднимать все таймауты.
  • Искать 504 только в браузере.
  • Путать 504 с 502.
  • Оптимизировать картинки при медленном запросе к базе.
  • Не смотреть логи.
  • Игнорировать периодические таймауты.
  • Возвращать 200 вместо 504.
  • Верить ответу нейросети без проверки.

Вопросы

504 — ошибка сервера или сайта?

Формально это ошибка шлюза. Причина может быть в приложении, базе, PHP-FPM, nginx, CDN или внешнем сервисе.

Влияет ли 504 на SEO?

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

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

502 означает, что ответ от бэкенда был некорректным или соединение не состоялось. 504 означает, что ответа не дождались за отведённое время.

Нужно ли увеличивать таймаут?

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

Почему 504 появляется только на одной странице?

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

Может ли нейросеть исправить 504?

Нет. Она помогает разобрать логи и составить план проверки. Причину подтверждают инструментами и тестами.

Источники

Официальные документы 9

Разбор проекта

Разберём сайт и спрос

Посмотрим сайт и спрос, скажем, что исправить первым. 20–30 минут в Zoom, Telegram или по телефону. Бесплатно и без обязательств.

Разобрать проектВсе материалы →