小编jäv*_*ävi的帖子

如何使用client_disconnected_before_any_response调试失败的请求

我们有一个由kubernetes ingress创建的HTTP(s)Load Balancer,它指向由运行nginx和Ruby on Rails的pod组成的后端.

看一下负载均衡器日志,我们检测到越来越多的请求,响应代码为0statusDetails= client_disconnected_before_any_response.

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

这种情况发生在从GET到POST的多种请求中.

我们还怀疑有时尽管请求记录了该错误,但请求实际上是传递给后端的.例如,我们看到了PG :: UniqueViolation错误,因为在我们的注册终端中,两次发送了令人满意的注册请求到后端.

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


 更新1

这里要求的入口资源的yaml文件:


 更新2

我已经创建了一个基于日志的Stackdriver度量标准,用于计算出现此行为的请求数.这是图表:

图表

大峰大致匹配这些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
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine google-cloud-networking kubernetes-ingress

13
推荐指数
1
解决办法
439
查看次数

UPDATE上的MySQL自动增量字段(最初为NULL)

假设我有一个包含这些字段的表顺序:

  • ID(PK和常规auto_increment)
  • 付款日期
  • 发票编号

最初使用payment_date和invoice_number创建带有NULL值的订单,因此我可以拥有以下行:

ID | payment_date | invoice_number
1  |     NULL     |     NULL
2  |   03/10/11   |      1
3  |   03/14/11   |      2
4  |     NULL     |     NULL
5  |     NULL     |     NULL
Run Code Online (Sandbox Code Playgroud)

我想要做的是当我更新一行以填充payment_date时,我需要使用第一个可用的invoice_number更新invoice_number.例如,如果我更新第五行,则invoice_number将为"3".

第一种方法是为invoice_number选择MAX()值,然后将1加到该值,但这会产生并发问题,对吧?

您认为什么是最佳解决方案?

提前致谢!

mysql

5
推荐指数
2
解决办法
7916
查看次数

听Rails的Juggernaut事件

我正在使用Juggernaut,Redis,SQLite和Rails 3.1构建一个简单的实时聊天

当另一个用户断开连接时(例如他关闭了窗口),我想给每个用户写一条新消息,这是为了听Juggernaut的客户端断开事件.

Juggernaut docs说我可以在服务器端做这个(Ruby)

Juggernaut.subscribe do |event, data|
  # Use event/data
end
Run Code Online (Sandbox Code Playgroud)

问题是我不知道我应该把这个代码放在我的Rails应用程序(控制器,模型,观察者?)中.我试图将它放入模型中,但是服务器不会响应任何带有大量代码的请求进入模型.

我想我应该从服务器端收听该事件,因为如果用户因为关闭窗口而断开连接,那么我没有该用户的"客户端".

可能我错过了一些关于Juggernaut如何工作的东西.任何帮助将不胜感激.

ruby-on-rails juggernaut

2
推荐指数
1
解决办法
959
查看次数