请求响应为500、502、503、504状态码的解释及可能原因是什么?
500(Internal Server Error) 后端服务器内部错误,无法执行请求。 可能原因:
后端服务器直接返回500,ALB透传后端状态码给客户端,请排查后端服务器返回500的原因。
后端服务器在发送完响应之前异常关闭连接,请在后端服务器抓包确定并排查请求异常关闭的原因。
502(Bad Gateway) HTTP或HTTPS监听接收到客户端连接请求后,ALB由于无法正常将请求转发至后端服务器或无法从后端服务器收到响应,则会向客户端发送HTTP 502 Bad Gateway状态码。 可能原因:
后端服务器直接返回502,ALB透传后端状态码给客户端,请排查后端服务器返回502的原因。
ALB后端服务器返回其他错误的状态码,但ALB统一返回502。建议排查访问日志的upstream_status和status字段或抓包排查后端服务器是否有异常。
ALB与后端服务器之间TCP通信异常,请排查后端服务器的状态是否正常、服务端口是否正常被监听,或抓包查看TCP握手报文是否正常。
后端服务器Backlog已满,导致报文丢弃。建议通过netstat查看后端服务器的网络统计结果是否有drop的计数,例如netstat -s | grep -i listen。
同一个服务器组的所有后端服务器健康检查都异常,与之关联的ALB实例无法转发请求,直接返回502。建议通过日志排查后端服务器是否有异常,或者检查健康检查配置是否存在异常。
客户端发送的报文长度超过了后端服务器的最大传输单元(Maximum Transmission Unit,MTU),表现为健康检查或报文较短的包正常,但报文较长的包异常。建议在后端服务器抓包分析报文长度是否符合要求。
后端服务器返回的报文格式异常或者有非法的HTTP标头。建议在后端服务器抓包,确认HTTP格式是否正常。
ALB后端服务器没有及时完成请求处理,请排查后端服务器的日志,并查看对应后端服务器的CPU、内存等的占用率。
503(Service Temporarily Unavailable) 暂时无法使用服务器。 可能原因:
后端服务器直接返回503状态码,ALB透传后端状态码给客户端,请排查后端服务器返回503的原因。
请求没有请求到ALB对应的监听上,监听配置在ALB未找到,可能是请求没有匹配到配置的监听策略。
504(Gateway Time-out) 后端服务器响应超时。 可能原因:
后端服务器直接返回504状态码,请排查后端服务器的负载是否过高。
ALB向后端服务器建立连接时,后端服务器建立连接超时,超时时间默认设置为30秒,您可以查看访问日志中的upstream_connect_time字段是否为30秒或者大于30秒。建议抓包排查后端服务器响应超时的原因。
后端服务器负载增大,响应请求的时间大于所配置的请求超时时间。比如配置的请求超时时间是60秒,如果响应时间为60.001秒,ALB将返回504。 访问日志中查看upstream_response_time。
如何检查请求不均衡?
一般情况下,影响负载均衡分配的因素包括分配策略、会话保持、长连接、权重等。换言之,最终是否均匀分配不仅与分配策略相关,还与使用的长短连接、后端的性能负载等相关。
检查是否开启了会话保持。如果配置了会话保持,而客户端的个数又比较少时,很容易导致不均衡。
检查后端云服务器的健康检查状态是否正常,特别要关注下是否有健康检查状态一会正常一会异常的情况。健康检查异常或者状态切换都会导致流量不均衡。
检查负载均衡算法是否是源IP算法。此时同一个IP发过来的请求都会分发到同一个后端,导致流量不均衡。
后端服务是否开启了TCP keepalive保持长连接。如果开启,则有可能因为长连接上的请求数不同导致流量不均衡。
将云服务器添加到LB后端时是否设置了权重,权重不同,分发的流量也不同。
后端服务器添加到LB时间不同也会影响请求分布不均衡。
后端服务器上流量不均衡,如何排查?
ALB当前选择服务器的调度单位是基于连接调度,当一条新建连接选中某一个服务器后,流量将一直转发到该服务器直到连接结束或超时。 因此当后端服务器上出现流量不均衡的情况,需要检查连接请求是否均衡。
可以从以下几点来排查:
检查调度算法,是否使用了基于权重的调度算法,比如加权轮询(wrr),服务器上配置的权重是否一致,如果不一致,则有可能出现流量不均衡。
检查后端所有服务器上的每秒新建连接数(cps)是否均衡,如果不均衡,则有可能出现流量不均衡。
检查后端所有服务器是否有长短连接混合使用的情况。
检查连接数是否太少。
如何检查负载均衡业务访问延时大?
一般从如下几方面检查:
将EIP绑定到后端云服务器,不经过弹性负载均衡直接访问后端服务,查看访问延时。用来判断是弹性负载均衡的问题,还是前端网络问题或者后端服务问题。
查看业务流量是否超过了EIP的带宽限制,超带宽会产生拥塞、丢包等异常情况。
如果直接访问后端存在业务访问延时大,需要排查后端服务是否压力过大,是否配置了安全策略等。
查看异常主机数的监控来判断后端云服务器的健康检查状态是否有跳变。在后端服务状况不稳定时,因为弹性负载均衡的重试机制,如果连接一台后端超时,请求会重新发往下一台后端,请求成功,这样业务就表现为访问成功,但是延时很大。