每小时 gRPC 调用出现峰值

Getting spikes in gRPC calls every hour

我有一个网站 运行,大约有 7 个服务器 (C#)。还有一个 gRPC 服务 (golang) 运行 3 个实例。每个 Web 服务器都连接到 gRPC 服务并对其进行调用。该服务每分钟大约有 8000 次调用。

对该服务的调用并不那么关键,因此最近我们将调用的截止时间缩短到了 20 毫秒。在这里我们注意到了一些奇怪的事情。 "deadline exceeded" 错误在一天中每小时都有一个峰值。它恰好发生在第 0 分钟,即下午 2 点、下午 3 点、下午 4 点等

为什么会这样?

我发现 this link 说 gRPC 每小时重置一次连接,但仅此而已。

所以我的问题是 gRPC 是否每小时在内部刷新一次连接。如果是的话,无论如何都要调整这种行为。如果否,那么有人可以指导我如何调试发生这种情况的原因。

不,grpc-go 不刷新连接。它启动断开连接的唯一时间是如果您配置 "max idle" (ref) 并且连接空闲时间超过该时间限制。默认情况下这是禁用的,因此在这种情况下它不太可能是罪魁祸首。