【问题标题】:Why do I get goaway from Bigtable in my C++ application?为什么我在我的 C++ 应用程序中从 Bigtable 中脱离出来?
【发布时间】:2016-05-06 08:30:17
【问题描述】:

我正在使用 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 是从源代码构建的,从 2016 年 1 月 22 日左右的主线构建,因此客户端代码是最新的。

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

【问题讨论】:

  • 只是一个猜测 - 但如果是在您开始后大约一个小时,您可能希望刷新身份验证令牌。

标签: c++ grpc google-cloud-bigtable


【解决方案1】:

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

所罗门关于超时的说法是对的。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-06-24
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 2011-12-03
      相关资源
      最近更新 更多