我有带有持久 Bigtable 客户端的 golang 服务。这些服务每秒对 Bigtable 进行数百次读/写操作。
从服务启动后的每一个小时,我都会遇到数百个这样的错误:
Retryable error: rpc error: code = Unavailable desc = the connection is draining, retrying in 74.49241ms
当这些错误发生时,错误之后是我不允许的处理时间增加。
我能够弄清楚 Bigtable 客户端正在使用 gRPC 连接池。
似乎 Bigtable gRPC 服务器的连接 maxAge 为 1 小时,这可以解释上述错误以及重新连接期间处理时间的增加。
maxAgeGrace 配置应该为完成当前操作提供额外的时间,并避免所有池连接同时终止。
我将连接池大小从默认的 4 增加到 12,但没有任何实际好处
考虑到我的流量会持续增长,如何防止处理时间在重新连接期间增加以及这些错误的发生?
缥缈止盈
qq_花开花谢_0
相关分类