grpc_send_timeout
Определяет таймаут отправки gRPC-ответов клиенту. — NGINX HTTP Core
Описание
Директива `grpc_send_timeout` в NGINX задаёт максимальный период времени, в течение которого сервер должен отправить gRPC-ответ клиенту после обработки запроса. Эта директива важна для того, чтобы клиентские приложения не ждали ответа бесконечно, что помогает управлять ресурсами и поддерживать производительность приложения. Директива действует в различных контекстах, таких как `http`, `server` и `location`, позволяя устанавливать разные значения таймаута в зависимости от конкретных потребностей ваших приложений. По истечении заданного периода таймаута NGINX разорвет соединение и сгенерирует код состояния gRPC, обозначающий ошибку таймаута. Это особенно полезно в средах с большим количеством микросервисов, где быстрые ответы об ошибке предпочтительнее потенциально бесконечного ожидания сильно задерживающих сервисов. Указанный таймаут применяется только для отправки ответов после того, как сервер начал их отправлять клиенту, то есть он не влияет на время обработки самого запроса, а лишь на интервал отправки финальных пакетов ответа. Синтаксис этой директивы: `grpc_send_timeout time;`, где `time` может быть задан в разных форматах, например `30s` для тридцати секунд или `1m` для одной минуты и т.д. Важно выбрать значение таймаута, которое уравновешивает предоставление достаточного времени для получения ответа и предотвращает блокировку общей работоспособности приложения из-за неотзывчивых сервисов.
Пример конфига
location /api {
grpc_pass grpc://backend_service;
grpc_send_timeout 30s;
}Установка слишком низкого значения таймаута может привести к преждевременным разрывам соединения, вызывая ненужные ошибки для легитимных запросов.
Убедитесь, что значение таймаута не конфликтует с другими настройками, такими как `client_body_timeout` или `send_timeout`, поскольку это может привести к непредвиденному поведению.