我正在使用gRPC Bigtable客户端运行用C ++编写的数据导入作业。一段时间后插入了超过1M条记录,我收到goaway
消息max_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是从2016年1月14日左右的主线源构建的,因此客户端代码是最近的。
有关为什么Bigtable会发送goaway
的任何建议?是否可以打开与Bigtable交谈时不会超时的grpc::Channel
?
答案 0 :(得分:1)
我对java方面比较熟悉,所以我希望这会有所帮助。对于持续使用的连接,连接有1小时超时。 java频道也会在短时间内超时而没有任何活动(大约几分钟)。
答案 1 :(得分:0)
您使用的是哪个客户?目前,一旦收到失控,gRPC C ++实现将关闭通道。这有点过于激进,你可能想检查通道状态并重新创建通道,如果你看到它在FATAL_FAILURE中。
所罗门所说的关于超时的说法是正确的。