【问题标题】:GRPc-netty upstream connect error or disconnect/reset before headersGRPc-netty 上游连接错误或在标头之前断开/重置
【发布时间】:2020-10-09 13:46:27
【问题描述】:

我正在尝试在我的服务之间使用 GRPC。我只有三个服务。其中两个在 k8s 中运行。 GCP 中的一个。 我从 GCP 中的服务调用其他服务。我为我的存根使用相同的 NettyChannelBuilder。客户端每秒的请求率相同。我在构建器中设置了 keepAliveWithoutCalls=true, keepAliveTime, idleTimeout。 不幸的是,我定期从一个客户那里得到这个错误?

io.grpc.StatusRuntimeException: UNAVAILABLE: upstream connect error or disconnect/reset before headers. reset reason: connection failure
    at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:233)
    at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:214)

谁能帮我找到解决办法? 我已经在 github 上阅读了很多问题。现在,我将为呼叫设置重试策略,但这不是最佳解决方案。

【问题讨论】:

    标签: java kubernetes netty grpc


    【解决方案1】:

    来自github

    我们遇到了同样的错误。我们的原因是因为 tcp_keepalive 对于我们的上游服务设置得太高了。我们将 keepalive_time 更改为 300 秒,问题就消失了。

    这在我们的例子中是有意义的,因为我们让 Envoy 指向一个具有 350 秒空闲超时的网络负载均衡器 (aws)。

    我们将此添加到我们的特使配置中。

    clusters:
        - name: grpc-service
          connect_timeout: 0.25s
          http2_protocol_options: {}
          upstream_connection_options:
            tcp_keepalive:
              keepalive_time: 300
    

    【讨论】:

      猜你喜欢
      • 2020-11-09
      • 2021-11-13
      • 2019-04-05
      • 2022-11-04
      • 2019-12-29
      • 2021-12-22
      • 2021-06-30
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多