grpc_next_upstream_timeout

Устанавливает таймаут подключения к следующему upstream server в gRPC-запросах. — NGINX HTTP Core

grpc_next_upstream_timeout
httpserverlocation
Синтаксисgrpc_next_upstream_timeout time;
По умолчаниюnone
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива `grpc_next_upstream_timeout` задаёт максимальное время ожидания подключения к следующему upstream server, когда предыдущий upstream server даёт сбой во время gRPC-запроса. Этот таймаут важен в сценариях, где несколько upstream server могут участвовать в обработке клиентского запроса. Если первоначальный upstream server сталкивается с ошибкой, сконфигурированный таймаут определяет, как долго NGINX будет пытаться подключиться к следующему доступному upstream server в стеке, прежде чем операция завершится по таймауту. Параметр для `grpc_next_upstream_timeout` задаётся в миллисекундах, что позволяет тонко контролировать скорость формирования ответа даже в неблагоприятных условиях, когда основной сервер не отвечает или работает медленно. Это напрямую влияет на эффективность и отзывчивость сервиса, особенно в случаях высокой частоты ошибок или задержек среди upstream server. Настраивая эту директиву, администраторы могут оптимизировать пользовательский опыт и использование ресурсов, балансируя между ожиданием ответа сервера и переключением на альтернативные серверы. Эту директиву можно установить в разных контекстах, таких как `http`, `server` и `location`, что делает её универсальной на разных уровнях конфигурации. Использование её в сочетании с родственными директивами, такими как `grpc_pass` или `proxy_next_upstream`, может дополнительно повысить общую функциональность и надёжность сервера.

Пример конфига

location /api {
    grpc_pass grpc://my_upstream;
    grpc_next_upstream_timeout 500ms;
}

Убедитесь, что указанное время соответствует требованиям к производительности вашего приложения; очень короткий timeout может привести к частым failovers, а слишком длинный timeout — к задержкам ответов.

Эта директива действует только при использовании gRPC; убедитесь, что ваш upstream server сконфигурирован соответствующим образом.