grpc_send_timeout
Определяет таймаут отправки gRPC-ответов клиенту.
Описание
Директива 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, поскольку это может привести к непредвиденному поведению.