我一直在尝试解决网关超时错误(504) 504 Gateway Timeout ELB 当我打开AWS ELB日志时,我收到了超时请求。
2018-11-09T22:32:23.016245Z bvt-AppServerLB-POI9R2HYQG67M 10.90.6.224:63629 - -1 -1 -1 504 0 1321 0 "POST https://xxxx.xxxxxxx.com:443/exec/scenario HTTP/1.1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2
问题是
我们能否从这些日志条目中说出是服务器超时还是客户端在连接到ELB时超时?我了解ELB维护着两个连接,一个连接到ec2实例(服务器),另一个连接到客户端。
对数平均数中的-1是什么?
请帮助,因为这将帮助我缩小问题区域的范围。
谢谢。
答案 0 :(得分:0)
TL; DR从您发布的日志中,可能是注册到负载均衡器的实例没有足够快地响应并且ELB空闲超时正在触发,或者实例在空闲超时之前关闭了连接。
Raise the idle timeout在ELB上,看看是否可以解决此问题。
第一个-
对应于backend:port
如果负载平衡器无法将请求发送到已注册的实例,或者该实例在可以发送响应之前关闭了连接,则此值设置为-。 如果注册的实例在空闲超时之前没有响应,则也可以将该值设置为-。
日志中的三个-1
分别对应于request_processing_time, backend_processing_time, and response_processing_time
。
request_processing_time
如果负载平衡器无法将请求分派到已注册实例,则此值设置为-1。如果注册的实例在空闲超时之前关闭连接,或者客户端发送格式错误的请求,则可能发生这种情况。此外,对于TCP侦听器,如果客户端与负载平衡器建立连接但不发送任何数据,则可能会发生这种情况。 如果注册的实例在空闲超时之前没有响应,则也可以将该值设置为-1。
backend_processing_time
如果负载平衡器无法将请求分派到已注册实例,则此值设置为-1。如果注册的实例在空闲超时之前关闭连接,或者客户端发送格式错误的请求,则可能发生这种情况。 如果注册的实例在空闲超时之前没有响应,则也可以将该值设置为-1。
response_processing_time
如果负载平衡器无法将请求分派到已注册实例,则此值设置为-1。如果注册的实例在空闲超时之前关闭连接,或者客户端发送格式错误的请求,则可能发生这种情况。 如果注册的实例在空闲超时之前没有响应,则也可以将该值设置为-1。
有关更多详细信息,请参见下面的链接。
参考
https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/config-idle-timeout.html https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/access-log-collection.html https://aws.amazon.com/blogs/aws/elb-idle-timeout-control/