如何使用CLIENT_DISCONNECT_BEFORE_ANY_RESPONSE调试失败的请求 [英] How to debug failed requests with client_disconnected_before_any_response

查看:18
本文介绍了如何使用CLIENT_DISCONNECT_BEFORE_ANY_RESPONSE调试失败的请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们有一个由Kubernetes入口创建的HTTP(s) Load Balancer,它指向由一组运行nginx和Ruby on rails的Pod组成的后端。

查看负载均衡日志,我们发现响应代码为0statusDetails=client_disconnected_before_any_response的请求数量不断增加。

我们正在试图理解为什么会发生这种情况,但我们还没有找到任何相关的东西。Nginx访问或错误日志中没有任何内容。

从GET到POST的多种请求都会发生这种情况。

我们还怀疑,有时尽管记录了带有该错误的请求,但请求实际上被传递到后端。例如,我们看到pg::UniqueViolation错误,这是由于标识注册请求被两次发送到注册终结点的后端。

任何形式的帮助都将不胜感激。谢谢!


更新1

根据请求,入口资源的here is the yaml文件:


更新2

我已经创建了一个基于日志的StackDrive指标,以统计呈现此行为的请求数量。图表如下:

大峰值与以下Kubernetes事件的时间戳大致匹配:

完全错误:Readiness probe failed: Get http://10.48.1.28:80/health_check: net/http: request canceled (Client.Timeout exceeded while awaiting headers)"

因此,对后端后面的Pod的就绪探测有时似乎会失败,但并不总是失败。

以下是ReadinessProbe的定义

readinessProbe:
  failureThreshold: 3
  httpGet:
    httpHeaders:
    - name: X-Forwarded-Proto
      value: https
    - name: Host
      value: [redacted]
    path: /health_check
    port: 80
    scheme: HTTP
  initialDelaySeconds: 1
  periodSeconds: 30
  successThreshold: 1
  timeoutSeconds: 5

推荐答案

响应代码为0且状态Detail=CLIENT_DISCONNECTED_BEFORE_ANY_RESPONSE表示客户端在负载均衡能够按照GCP documentation提供响应之前关闭连接。

调查它没有及时响应的原因,其中一个原因可能是来自ngix的keepalive timeouts与gcp负载均衡的差异,即使这最像是提供了502 Bad Gateway race condition导致的backend_connection_closed_before_data_sent_to_client。

为了确保后端响应请求并查看是否需要多长时间,您可以重复此过程几次(因为您仍然会得到一些有效的响应):

卷曲响应时间

$curl-w"@curl.txt"-o/dev/null-s ip_here

curl.txt内容(先创建并保存此文件):

   time_namelookup:  %{time_namelookup}

      time_connect:  %{time_connect}

   time_appconnect:  %{time_appconnect}

  time_pretransfer:  %{time_pretransfer}

     time_redirect:  %{time_redirect}

time_starttransfer:  %{time_starttransfer}

                ----------

        time_total:  %{time_total}

如果是这种情况,请查看任何类型的循环的注册终结点代码,如您提到的PG::UniqueViolation错误。

这篇关于如何使用CLIENT_DISCONNECT_BEFORE_ANY_RESPONSE调试失败的请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆