Ошибка 504 Gateway Timeout: причины и исправление

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

Обновлено 28 октября 2026

Это не ваш сайт? Если чужой сайт не открывается только у вас — попробуйте другой браузер, мобильный интернет и отключите VPN. Дальше на странице — разбор для владельца сайта.

Шаг 1. Выясните, на каком действии появляется ошибка

Это главный вопрос. Если браузер вообще не дождался ответа сервера и сообщает о тайм-ауте соединения, это другая ошибка: ERR_CONNECTION_TIMED_OUT. Запишите, что вы делали в момент ошибки.

  • Открываете любую страницу. Сервер перегружен или база данных не отвечает.
  • Запускаете импорт или экспорт товаров, формирование отчёта, массовое действие. Операция идёт дольше предела ожидания.
  • Оплачиваете заказ или отправляете форму. Сайт ждёт ответа внешнего сервиса: платёжной системы, службы доставки, CRM, почты.
  • Открываете страницу после обновления плагина. Новый код делает тяжёлый запрос.

Шаг 2. Узнайте, какое время ожидания настроено

Веб-сервер ждёт ответ ограниченное время. В nginx за это отвечают директивы proxy_read_timeout и fastcgi_read_timeout, по умолчанию 60 секунд (документация nginx). Если запрос идёт через Cloudflare, прокси ждёт ответ около 100 секунд и показывает ошибку 524 (ошибки Cloudflare). Хостинги задают свои значения.

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

Не хотите разбираться сами? Пришлём оценку в часах до начала работы, первая задача до 2 часов бесплатно.

Отправить задачу

Шаг 3. Найдите медленный запрос к базе

В WordPress поможет плагин Query Monitor: он показывает самые долгие запросы к базе на странице. В 1С-Битрикс используйте встроенный отладчик производительности (раздел «Настройки» → «Производительность»). На сервере можно включить журнал медленных запросов MySQL (slow_query_log) и посмотреть, какие запросы идут дольше секунды.

Типичные причины:

  • таблица без индекса, по которой идёт поиск или фильтр;
  • огромная таблица логов или сессий;
  • запрос в цикле: на каждый товар отдельный запрос к базе.

Шаг 4. Проверьте внешние обращения

Если сайт при оформлении заказа ждёт ответа платёжного сервиса и тот не отвечает, ответ сайта задерживается до тайм-аута. В коде обращения к внешним сервисам должны иметь собственный ограниченный тайм-аут (5–10 секунд) и обработку ошибки. Проверьте, нет ли в журнале ошибок записей о недоступных внешних адресах.

Шаг 5. Тяжёлые операции запускайте не из браузера

Импорт товаров, пересчёт цен, генерация карты сайта на тысячи страниц не должны выполняться в одном запросе. Решения: запуск по расписанию (cron), порционная обработка (по 100–500 записей за шаг), очередь заданий. Если импорт запускает менеджер кнопкой в админке и получает 504, это признак, что порции нужно уменьшить или переносить запуск на cron.

Когда нужен специалист

  • Нужно найти узкое место в коде или базе, а профилировщика нет.
  • Ошибка появляется при оплате или обмене с 1С и CRM.
  • Увеличение тайм-аута не помогло, а нагрузка растёт.

Сколько стоит решение у нас

ЗадачаВремяСтоимость
Исправление ошибки1–2 ч3 800–7 600 ₽
Ускорение загрузки2–5 ч7 600–19 000 ₽
Разбор инцидента1–3 чот 3 800 ₽

Диапазоны ориентировочные, ставка 3 800 ₽ в час. Точную оценку присылаем до начала работ. Все цены.

Не хотите разбираться сами?

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

Отправить задачу

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

В чём разница между 504 и 502?

При 502 от приложения пришёл некорректный ответ или связь оборвалась. При 504 ответа не было совсем в отведённое время. Разбор 502: Bad Gateway.

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

Для разовой операции (единичный импорт) можно. Для обычных страниц нельзя: посетитель не станет ждать больше 5–10 секунд, а долгие запросы занимают процессы PHP и вызывают перегрузку.

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

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