应用负载均衡器上的状态码460

20
在我的应用程序负载均衡器日志中,我看到了令人担忧的大量 460 状态码。就这些代码而言,我没有在时间、服务器或请求 URL 方面看到任何模式。根据这个论坛帖子,460 的意思是:
客户端在前端或后端连接空闲超时之前关闭了与 ALB 的连接。
我可以看到请求已经到达后端服务器并且后端进程可以快速处理请求而无任何问题。为什么会发生这些错误?此负载均衡器与 6-8 个后端服务器有大量流量。
示例 ALB 日志: https 2017-01-30T22:46:27.451363Z app/LOAD-BALANCER/bbab458ad0b80d X.X.X.X:55999 10.5.X.X:80 0.000 -1 -1 460 - 132 0 "GET https://www.website.com:443/app/page HTTP/1.1" "-" ECDHE-RSA-AES128-SHA TLSv1 arn:aws:elasticloadbalancing:us-west-2:743462462234:targetgroup/TARGET-GROUP/e6120e5adr245b79107e "Root=1-588fc23e-77aea5adf4534af3de09659d13a08" 示例后端的 NGINX 日志: X.X.X.X 1485807955.048 www.website.com /app/page - GET 200 - 0.056 24 text/html; charset=UTF-8 -

3
你是怎么解决这个问题的?被采纳的答案提到了改变客户端超时时间,但当客户端是浏览器时这是不可行的...你是否找到了与问题相关的其他信息? - atlas_scoffed
2个回答

33

针对应用负载均衡器,状态码460的文档已更新。

当负载均衡器接收到客户端请求后,如果客户端在空闲超时时间到期之前关闭与负载均衡器的连接,则会出现此错误。

请检查客户端超时时间是否大于负载均衡器的空闲超时时间。确保您的目标在客户端超时时间到期之前向客户端提供响应,或者如客户端支持,则将客户端超时时间增加以匹配负载均衡器的空闲超时时间。

您可以在此处阅读完整文档: http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-troubleshooting.html#http-460-issues


在这种情况下,“client”指的是用户的浏览器吗?在什么情况下会发生用户浏览器终止连接的情况? - atlas_scoffed
请翻译以下有关编程的内容从英语到中文。只返回翻译的文本:可以是任何东西,甚至是 curl 请求。如果是浏览器,您可以看到这个链接:https://dev59.com/o2025IYBdhLWcg3wyZEn - Arturo
如果客户端已关闭连接,谁将接收460响应? - tusharmath
4
没有人会收到它。它只会出现在ALB日志中。 - mbbush

13

这个序列中可能有线索:

0.000 -1 -1 460 -

字段包括请求处理时间、目标处理时间、响应处理时间、elb状态码和目标状态码。

目标处理时间和响应处理时间字段为-1,表明存在将请求分发到目标主机的问题,详见http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html

检查目标是否收到请求,可能存在ALB和目标之间的配置或网络问题。ALB在发送请求时会插入跟踪标头X-Amzn-Trace-Id到请求中,建议在NGINX后端记录这些日志,查看是否收到了出现问题的特定请求。

我曾遇到类似的问题,似乎与我们的主机由于Windows主机上的TCP卸载而丢失TCP数据包有关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接