504
Критично — не откладывайте

Ошибка 504 — CMS и хостинг

Что это значит

Код 504 Gateway Timeout — это HTTP-статус, указывающий, что сервер, выступающий в роли шлюза или прокси, не дождался ответа от вышестоящего сервера за отведённое время. В контексте CMS и хостинга это означает, что веб-сервер (например, Nginx или Apache) отправил запрос к бэкенд-серверу (PHP-FPM, база данных, внешний API), но ответ не поступил в пределах тайм-аута. Пользователь видит сообщение «504 Gateway Timeout» или просто пустую страницу с ошибкой.

Вероятные причины

  • Медленный скрипт CMS (например, долгий запрос к БД или внешнему API)
  • Недостаточные ресурсы сервера (CPU, RAM) при высокой нагрузке
  • Некорректные настройки тайм-аута в веб-сервере (proxy_read_timeout, fastcgi_read_timeout)
  • Сбой или перегрузка сервера базы данных
  • Проблемы с PHP-FPM (зависшие процессы, исчерпание пула)
  • Медленный или недоступный внешний API, к которому обращается CMS
  • Проблемы с DNS или сетью между шлюзом и бэкендом
  • Неоптимизированный код плагинов или темы CMS

Что делать — по порядку

  1. Проверить логи веб-сервера (error.log) и логи PHP-FPM на предмет ошибок времени выполнения.
  2. Перезагрузить веб-сервер и PHP-FPM: sudo systemctl restart nginx && sudo systemctl restart php7.4-fpm.
  3. Увеличить тайм-ауты в конфигурации веб-сервера: proxy_read_timeout 300; fastcgi_read_timeout 300;.
  4. Проверить нагрузку на сервер (htop, top) и при необходимости увеличить ресурсы или оптимизировать запросы.
  5. Оптимизировать медленные запросы CMS: включить кэширование, отключить неиспользуемые плагины, проверить индексы БД.
  6. Проверить доступность и время ответа внешних API, используемых CMS, через curl или аналоги.
  7. Настроить мониторинг (например, New Relic) для выявления узких мест.
  8. Обратиться к хостинг-провайдеру для проверки инфраструктуры, если проблема на стороне сети.

Нажимайте на пункты, чтобы отмечать выполненные.

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

Что делать, если ошибка 504 появляется только на одной странице?

Проверьте, какие запросы выполняет эта страница — возможно, она обращается к медленному внешнему API или выполняет тяжелый SQL-запрос. Оптимизируйте код или увеличьте тайм-ауты.

Как увеличить время ожидания в Nginx?

Добавьте в блок location или server директивы proxy_read_timeout и fastcgi_read_timeout с нужным значением в секундах, затем перезагрузите Nginx.

Может ли ошибка 504 быть вызвана проблемами с DNS?

Да, если DNS-запросы к бэкенду или внешнему API выполняются слишком долго. Проверьте настройки резолвера и время ответа DNS.

Почему ошибка 504 появляется периодически?

Вероятно, из-за временных пиков нагрузки или фоновых задач (cron). Проверьте логи на совпадение времени ошибки с запуском задач.

Как проверить, что проблема не в хостинге?

Создайте простой PHP-файл с sleep(10) и проверьте, возвращает ли он 504. Если да — проблема в конфигурации сервера, если нет — в CMS.

Источники