SystemdDoctor
служба не работает nginx таймауты частое

nginx 504 Gateway Time-out: upstream timed out

Ошибка 504 означает, что приложение не ответило за отведённое время. nginx тут ни при чём: он честно ждал и прервал ожидание. Разбираться надо с приложением, а таймаут поднимать только осознанно.

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

По порядку: сверху то, что встречается чаще.

  1. Приложение отвечает дольше таймаута

    Тяжёлый запрос, медленная база, внешний вызов без ограничения времени. Значение по умолчанию — 60 секунд.

  2. Пул обработчиков исчерпан

    Если все рабочие процессы заняты, новый запрос ждёт в очереди и может не дождаться. В журнале приложения рядом будут сообщения о достижении предела.

  3. Таймаут занижен в конфигурации

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

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Строка с адресом приложения и временем ожидания.

sudo tail -40 /var/log/nginx/error.log | grep -i "upstream timed out"

Действующие таймауты ожидания ответа.

sudo nginx -T 2>/dev/null | grep -E "_read_timeout"

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Приложение отвечает дольше таймаута
Почему происходит
Тяжёлый запрос, медленная база, внешний вызов без ограничения времени. Значение по умолчанию — 60 секунд.
Как проверить
Посмотрите журнал ошибок и время ответов.
sudo tail -30 /var/log/nginx/error.log | grep -i timeout
sudo tail -20 /var/log/nginx/access.log
Как исправить
Ускоряйте приложение: выносите тяжёлые операции в фоновые задачи. Поднятие таймаута лишь удлиняет ожидание для посетителя и держит соединения.
2. Пул обработчиков исчерпан
Почему происходит
Если все рабочие процессы заняты, новый запрос ждёт в очереди и может не дождаться. В журнале приложения рядом будут сообщения о достижении предела.
Как проверить
Посмотрите журнал обработчика.
journalctl -u php8.3-fpm -n 30 --no-pager | grep -i max_children
Как исправить
Поднимите число рабочих процессов с учётом памяти или ускорьте обработку.
3. Таймаут занижен в конфигурации
Почему происходит
Иногда 504 получают на операциях, которые по смыслу длинные: выгрузка отчёта, загрузка большого файла.
Как проверить
Посмотрите действующие таймауты.
sudo nginx -T 2>/dev/null | grep -E "read_timeout|send_timeout|connect_timeout"
Как исправить
Поднимите таймаут точечно для нужного пути, а не для всего сервера: так остальные запросы останутся под защитой.

Пример вывода

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

2026/09/15 14:32:11 [error] 1120#1120: *42 upstream timed out (110: Connection timed out) while reading response header from upstream, client: <адрес>, server: example.org, request: "GET /report HTTP/1.1", upstream: "fastcgi://unix:/run/php/php8.3-fpm.sock"

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация nginx: таймауты прокси документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено обработчиком с искусственной задержкой в 90 секунд.
    собственная проверка, systemd 255
    сверено 15 сентября 2026