其中一些常用的配置选项(例如GRPC_ARG_KEEPALIVE_TIME_MS、GRPC_ARG_KEEPALIVE_TIMEOUT_MS、GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS、GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA等),需要根据自己的应用场景来设置适合的值,以达到预期的良好服务能力。下面就这些配置选项给出例子描述说明,以帮助更好地理解。 配置选项...
使用Keep-Alive:启用 HTTP/2 的 Keep-Alive 功能,以便在一个连接上复用多个请求。这可以减少连接建立和关闭的开销。 调整gRPC 参数:可以调整 gRPC 的一些参数,如最大并发流、初始窗口大小等,以提高性能。例如,可以通过设置 GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA 参数来调整空闲连接的超时时间。 使用负载均衡:在...
GRPC_ARG_HTTP2_MIN_RECV_PING_INTERVAL_WITHOUT_DATA_MS 如果没有 data/frames 在通信端口上被发送,服务器边的这个 channel 参数控制 gRPC Core 期望两次成功的pings接受的最小间隔时间(以毫秒为单位)。如果两次成功的 pings 间的间隔时间小于设定的时间,ping 将被认为是一个来自对端的 bad ping。这样的ping被...
该transport上没有活动调用,并且GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS为false。 transport中已发送的ping数目(在transport中没有其他data发送时)已超过GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA。 自上次ping以来经过的时间少于GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS。 如果keepalive的ping没有被bl...
回到我们最初的话题,怎么才能避免出现too many pings导致的连接断开的问题呢?既然我们已经知道了server的处理算法,那么问题就变成了如何使ping_strikes始终小于等于2呢? 方法如下: client和server都不开启PERMIT_KEEPALIVE_WITHOUT_CALLS client的keepalive time小于10s(GRPC_ARG_KEEPALIVE_TIME_MS最小值是10s) ...
GRPC_ARG_KEEPALIVE_TIMEOUT_MS|20000 (20 seconds)|20000 (20 seconds) GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS|0 (false)|0 (false) GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA|2|2 GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS|300000 (5 minutes)|300000 (5 minutes) GRPC_ARG_HTTP2_...
GRPC_ARG_KEEPALIVE_TIMEOUT_MS = 10000 GRPC_ARG_HTTP2_MIN_SENT_PING_INTERVAL_WITHOUT_DATA_MS = 10000 GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA = 0 GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS = true some servers are not configured properly and repeatedly send "too_many_pings" triggering reconnect ...
GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA This channel argument controls the maximum number of pings that can be sent when there is no data/header frame to be sent. gRPC Core will not continue sending pings if we run over the limit. Setting it to 0 allows sending pings without such a res...
原理是:每隔N秒ping客户端,当客户端无法ping通的时候,服务端会主动断开连接。代码如下:
然而 grpc 的 HTTP2 连接有复用能力,N 个goroutine用一个 HTTP2 连接没有任何问题,不会单纯因为没...