访问负载均衡器返回502/503/504是什么原因?
错误代码说明
代理服务器常见错误代码:
- 502(Bad Gateway):作为代理或网关使用的服务器从请求响应链的下一条链路上收到了一条伪响应。
- 503(Service Unavailable):说明服务器现在无法为请求提供服务(暂时不可用),将来可以。
- 504 (Gateway Time-out):作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器或者辅助服务器收到响应。
原因分析
访问负载均衡器时返回502/503/504时,说明请求已经到达了负载均衡器,负载均衡器和后端交互时出现了问题。
-
负载均衡器返回502原因
502状态码错误提示表明负载均衡可以将来自客户端的请求转发到后端服务器,但是由于服务器中 Web 应用处理异常,导致出现该提示,所以排错的方向是针对服务器中 Web 应用的配置以及运行情况进行分析。
-
负载均衡器返回503原因
503状态码表示后端服务不可用,负载均衡器无法将请求发送到后端服务器,所以排查方向主要针对于负载均衡器和后端服务器之间的网络问题,以及后端服务器是否存活等问题进行分析。
-
负载均衡器返回504原因
504状态码表示该负载均衡器能够连接后端服务器,但在读取服务器响应的时候超时了。所在排查问题时,应该注意负载均衡器的超时时间、后端服务器服务器负载、网络延迟、后端服务器的进程是否正常等问题。
处理方法
-
负载均衡问题
-
检查负载均衡状态,查看是否存在健康检查失败的情况,如果有则需要先排查健康检查失败原因。
-
负载均衡器开启 rsyslog,通过日志来排查问题。
-
在七层(HTTP/HTTPS)监听配置中,连接请求超时时间默认值为50秒,若后端云服务器对 PHP 请求的处理时间超过60秒,此时负载均衡器会返回504状态码。
说明
如果无法确定是否是负载均衡器的问题,可以在客户端的hosts文件中,将域名解析至后端服务器的IP地址上进行访问。由此来绕过负载均衡器。来检测访问是否正常。
-
-
后端服务器问题
如果5XX状态码间断发生,很可能是某一台后端实例的问题。在客户端的 hosts 文件中,将域名解析至后端服务器的 IP 地址上进行访问,检查是否是某一台后端问题。
如果确定是后端服务器问题,请按照以下步骤进行排查:
- 检查服务器 CPU,内存,磁盘IO等负载是否正常。此外对于部分服务来说,数据盘的使用空间也会影响到服务是否正常。
- 结合业务日志排查问题。
- 检查服务器网络,防火墙是否有开启限制,检查 TCP、UDP连接池是否占满。