0

backend_connection_closed_before_data_sent_to_clientGKE负载平衡出现以下错误

{
  "insertId": "2s6fnng1hodqg9",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry",
    "statusDetails": "backend_connection_closed_before_data_sent_to_client"
  },
  "httpRequest": {
    "requestMethod": "POST",
    "requestUrl": "https://myhost.com/xxx",
    "requestSize": "2105",
    "status": 502,
    "responseSize": "1749",
    "userAgent": "Dalvik/2.1.0 (Linux; U; Android 10; PACM00 Build/QP1A.190711.020)",
    "remoteIp": "108.2.118.7",
    "latency": "0.196275s"
  },
  "resource": {
    "type": "http_load_balancer",
    "labels": {
      "url_map_name": "k8s2-um-ncl1za1o-server-4asvtfi2",
      "forwarding_rule_name": "k8s2-fs-ncl1za1o-server-4asvtfi2",
      "target_proxy_name": "k8s2-ts-ncl1za1o-server-4asvtfi2",
      "backend_service_name": "",
      "project_id": "project_xxx",
      "zone": "global"
    }
  },
  "timestamp": "2021-03-30T08:56:14.246839Z",
  "severity": "WARNING",
  "logName": "projects/project_xxx/logs/requests",
  "trace": "projects/project_xxx/traces/0da5955f95fa5ff8ee4e5",
  "receiveTimestamp": "2021-03-30T08:56:16.439355873Z",
  "spanId": "6c480f02d61ed310"
}

据此_

在将响应代理到客户端之前,后端意外关闭了与负载均衡器的连接。如果负载均衡器将流量发送到另一个实体,则可能会发生这种情况。另一个实体可能是第三方负载平衡器,其 TCP 超时时间短于外部 HTTP(S) 负载平衡器的 10 分钟(600 秒)超时。第三方负载均衡器可能在 VM 实例上运行。手动将目标服务上的 TCP 超时(keepalive)设置为大于 600 秒可能会解决此问题。

我们所做的

    1. 将超时更改为 620 秒以在后端保持活动状态
    1. 将 LB 后端服务超时设置的超时更改为 620 秒

receiveTimestamp但是,和的时间跨度timestamp是2秒,这让我们很困惑,为什么超时这么短?

还有一个问题,502 仅来自特定代理“Dalvik/2.1.0”,这是一件奇怪的事情。所有其他客户端都可以正确地将数据发布到后端服务器。

我们如何在 GKE 中调试这个问题?

4

0 回答 0