Перейти к содержанию
Инциденты

Nginx upstream timed out: не увеличивайте timeout вслепую

Сообщение upstream timed out означает, что Nginx не получил нужную часть ответа upstream за заданное время. Это симптом: причиной может быть медленный запрос, очередь workers, внешняя зависимость или перегрузка.

Антон БелогородцевЧтение: 4 минОбновлено 15 июля 2026 г.4 практических разделов
Что получите
01сохраните полный log context
02найдите URL и upstream
03проверьте фазу timeout

Диагностическое дерево HTTP 5xx

Выберите симптом, чтобы увидеть вероятную зону проверки.

Проверьте приложение

Начните с логов backend, последних деплоев, переменных окружения и ошибок базы данных.

Короткий ответ

Как диагностировать upstream timed out в Nginx: время ошибки, upstream, proxy timeout, PHP-FPM, база, внешние API, очередь и нагрузка сервера.

01

Прочитайте точную строку error log

Зафиксируйте client, request, upstream, host и фазу timeout: connecting, reading response header или sending request. Они показывают, где именно ожидание превысило лимит.

Сопоставьте timestamp с access log и request id. Без конкретного URL и времени анализ CPU или базы превращается в догадку.

сохраните полный log context
найдите URL и upstream
проверьте фазу timeout
сопоставьте request id
02

Проверьте upstream напрямую

Безопасный локальный запрос к health endpoint помогает отделить Nginx от приложения, но не запускайте тяжёлую пользовательскую операцию повторно на production. Проверьте, слушает ли процесс правильный socket/port и нет ли очереди.

Для PHP-FPM смотрите max children reached, active/idle processes и slowlog. Для Node/Java — event loop, worker pool, GC и внутренние таймауты.

не повторяйте опасный POST
проверьте очередь workers
откройте slowlog
смотрите рестарты процесса
Разовая проверка показывает сейчас

Мониторинг покажет, когда состояние изменится

Добавьте сайт или сервер один раз — perfMon будет проверять его автоматически, сохранит историю и сообщит о сбое и восстановлении.

Начать бесплатно
03

Найдите медленную зависимость

Частые причины — запрос к базе без индекса, блокировка, внешний API без короткого timeout, сетевое хранилище или синхронная тяжёлая задача. Используйте tracing, slow query log и application logs около одного запроса.

Если все запросы замедлились одновременно, сопоставьте CPU, RAM, load, disk I/O и сеть. Высокая метрика — корреляция, а не доказательство, пока логи не показывают конкретное ожидание.

проверьте slow query
найдите внешние вызовы
смотрите pool exhaustion
сопоставьте с ресурсами
04

Когда менять proxy timeout

Увеличение proxy_read_timeout оправдано, если операция по контракту действительно длительная и пользователь должен ждать синхронный ответ. Но для фоновой задачи лучше очередь и отдельный статус выполнения.

После исправления повторите контролируемый запрос, проверьте TTFB и оставьте мониторинг критичного endpoint. Порог должен учитывать нормальный p95, а не единичный лучший ответ.

сначала устраните узкое место
долгую работу выносите в очередь
согласуйте timeout по цепочке
мониторьте endpoint после исправления
От знания к системе

Автоматизируйте проверку, описанную в статье

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

Настроить бесплатно
01Добавьте URL и включите регулярные проверки.
02Собирайте HTTP, TTFB, SSL и историю состояния.
03Получайте сигнал о сбое и отдельное сообщение о восстановлении.
Следующий шаг

Применить на практике

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

Короткие ответы на вопросы, которые обычно возникают при диагностике.

upstream timed out — это всегда 504?

Часто клиент получает 504, но точный результат зависит от фазы, конфигурации и того, успел ли Nginx отправить часть ответа.

Поможет ли proxy_read_timeout 300?

Он может скрыть симптом и занять worker/connection дольше. Сначала подтвердите, почему upstream медленный и соответствует ли длительность контракту.

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

502 обычно означает некорректный или отсутствующий ответ upstream, 504 — превышение времени ожидания ответа.

Следующий шаг

Не ждите следующего сообщения «сайт не работает»

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

7 дней бесплатнобез картыотмена в любой момент