我正试图了解gRPC如何保持活动或空闲连接。我有双向流RPC,在这里我创建会话,什么都不做,因此通道上没有任何活动。
发布于 2022-01-24 12:01:42
这里发生的事情是,也许GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS参数是正确的,这就是为什么即使没有连接也要发送ping。
GRPC_ARG_KEEPALIVE_TIMEOUT_MS控制文档中所写的超时:
此通道参数控制保持活动ping的发送方等待确认的时间(毫秒)。如果它在这段时间内没有收到确认,它将关闭连接。
您可以手动调整此参数以控制超时持续时间。
将GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS设置为false,以便在没有活动调用时不能发送keepAlive页面。
发布于 2022-01-22 17:01:23
KeepAlive参数是用来确保连接保持打开,并向服务器和客户端指示它仍在连接和响应。
您可以在操作这里中看到这方面的低级别视图。
另一方面,在没有通过连接发送请求之后,Idle Connections参数将关闭连接(这指的是应用程序级别的数据包,而不是保持活动的数据包)。这很好,因为空闲连接占用内存、CPU和打开的套接字,这些都是有限的资源。
https://stackoverflow.com/questions/70741569
复制相似问题