2

我正在使用 gRPC Bigtable 客户端运行用 C++ 编写的数据导入作业。经过一段时间并插入超过 100 万条记录后,我收到goawaymax_age消息。这是我的第一个一般性和第一个长时间运行的 Bigtable 应用程序,所以我不确定这goaway是否特定于插入的数量或连接持续时间,或者它到底是什么goaway。似乎我遇到了某种超时。查看 gRPC C++ 代码,特别是 grpc::Channel,我没有看到任何超时控制,所以我不知道如何处理这个问题,除了重新打开数据库连接。

我从 gRPC 客户端收到的确切错误消息如下所示:

D0127 23:05:35.439218531   19729 chttp2_transport.c:683]     got goaway [0]: 6d 61 78 5f 61 67 65 'max_age'

gRPC 和 protobuf 是从源代码构建的,从 16 年 1 月 22 日左右的主线开始,所以客户端代码是最近的。

关于为什么 Bigtable 会发送的任何建议goaway?与Bigtable交谈时是否可以打开一个grpc::Channel不超时的?

4

2 回答 2

1

我更熟悉java方面,所以我希望这会有所帮助。对于持续使用的连接,连接有 1 小时超时。java 通道也会在没有任何活动的短时间内超时(大约几分钟)。

于 2016-02-03T23:10:02.170 回答
0

你用的是什么客户端?目前,一旦收到 goaway,gRPC C++ 实现将关闭通道。这有点过于激进,如果您看到它处于 FATAL_FAILURE 状态,您可能需要检查通道状态并重新创建通道。

所罗门所说的关于超时是正确的。

于 2016-02-24T20:07:41.643 回答