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

504 означает, что фронтовый сервер ждал ответа от приложения дольше отведённого времени и сдался. Сайт не «упал» — он думает слишком долго, и цепочка рвётся по таймауту.

Подключить бесплатноБесплатный тариф навсегда

Кто кого не дождался

У nginx есть proxy_read_timeout, у PHP — max_execution_time, у базы — свои лимиты. Если запрос обрабатывается дольше самого строгого из них, посетитель получает 504. Чаще всего это тяжёлый отчёт, выгрузка, обращение к внешнему API или запрос без индекса в базе.

Где искать долгий запрос

  • Медленные запросы в логе базы: включите slow query log и посмотрите, что выполняется дольше секунды.
  • Внешние интеграции: платёжный шлюз, служба доставки, CRM — их таймаут становится вашим.
  • Импорт и выгрузки: обмен с 1С и генерация отчётов почти всегда упираются в лимит.
  • Холодный старт после деплоя, когда кэш пустой и первые запросы собирают всё заново.

Что делать

  • Вынесите долгую работу в фоновую задачу и отдавайте ответ сразу, а результат — по готовности.
  • Добавьте индексы под тяжёлые выборки и кэшируйте то, что не меняется каждую минуту.
  • Ограничьте время ожидания внешних API и обрабатывайте их отказ, а не ждите до последнего.
  • Поднимать таймауты стоит в последнюю очередь: это прячет симптом, а не лечит причину.

Как видеть медленные ответы заранее

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

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

504 — это проблема хостинга?

Не обязательно. Хостинг лишь применяет таймаут; долго работает ваш код, база или внешний сервис. Смена тарифа помогает только когда упирались в ресурсы.

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

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

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

Как временная мера — да, но посетитель всё равно не станет ждать полминуты. Правильнее ускорить операцию или увести её в фон.

Следите за временем ответа, а не только за доступностью

Проверки раз в минуту с фиксацией времени ответа и лог медленных запросов из браузеров посетителей.

Подключить бесплатно

Бесплатный тариф навсегда