grpc_socket_keepalive
Директива grpc_socket_keepalive включает поддержку TCP keepalive для gRPC-соединений в NGINX. — NGINX HTTP Core
Описание
Директива `grpc_socket_keepalive` используется для включения или отключения функции TCP keepalive для gRPC-соединений, обрабатываемых NGINX. Когда она включена, эта директива обеспечивает сохранение неактивных TCP-соединений в рабочем состоянии путем отправки периодических keepalive-зондов. Это важно для поддержания долгоживущих соединений, которые часто используются в gRPC для взаимодействия сервисов. По умолчанию во многих операционных системах TCP keepalive может быть отключён, что может привести к закрытию соединений и прерыванию связи после периода простоя. Директива принимает значение-флаг, то есть может быть установлена в 'on' (включено) или 'off' (отключено). При установке в 'on' NGINX настроит параметры сокета для keepalive, что позволит отправлять keepalive-пакеты в соответствии с настройками системы (такими как `tcp_keepalive_time`, `tcp_keepalive_intvl` и `tcp_keepalive_probes`). Поэтому для корректной работы keepalive также необходимо отрегулировать эти параметры на уровне системы. Обратите внимание, что включение этой функции без надлежащих настроек сервера может привести к проблемам с производительностью или избыточному сетевому трафику, особенно в средах с высокой нагрузкой.
Пример конфига
server {
listen 80;
grpc_socket_keepalive on;
location /myservice {
grpc_pass grpc://backend;
}
}Убедитесь, что настройки TCP keepalive вашей операционной системы сконфигурированы надлежащим образом, поскольку NGINX полагается на них для управления keepalive packets.
Не включайте keepalive для кратковременных соединений, так как это может привести к дополнительным накладным расходам без существенной выгоды.