grpc_socket_keepalive

Директива grpc_socket_keepalive включает поддержку TCP keepalive для gRPC-соединений в NGINX. — NGINX HTTP Core

grpc_socket_keepalive
httpserverlocation
Синтаксисgrpc_socket_keepalive on | off;
По умолчаниюoff
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументыflag

Описание

Директива `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 для кратковременных соединений, так как это может привести к дополнительным накладным расходам без существенной выгоды.