建议开启ALB访问日志,帮助快速定位ALB返回的HTTP异常。用户可以优先排查访问日志中的ALB状态码(status)和后端状态码(upstream_status)是否相同。若两者相同,很可能ALB直接透传了后端状态码,建议优先排查后端服务的异常原因。
400 Bad Request
请求格式异常。
后端直接返回400:建议检查访问日志,如
upstream_status的值为400,则很可能ALB透传了后端状态码。请排查后端服务。HTTP请求发送至HTTPS监听:ALB的HTTPS监听会拒绝非HTTPS请求并返回
400。请检查客户端是否误将HTTP请求发送至HTTPS端口。请求头大小超限:ALB要求每个HTTP请求头最大不超过32KB,超过此限制会返回
400。建议调整HTTP请求头的长度。请求未完整发送:HTTP请求发送完成前,客户端关闭了连接。建议在客户端抓包分析原因。
请求头格式错误:如
Content-Length与实际请求体长度不一致。建议在客户端抓包分析HTTP请求的格式,与正常请求进行比较。
405 Method Not Allowed
请求方法不支持。
ALB自身限制:ALB不支持
TRACE请求方法。建议用其他方法替换。后端服务限制:除
TRACE外,其他请求方法能否被处理取决于后端服务器是否支持。可直接运行curl -X METHOD http://<后端服务IP>:<服务端口>进行验证,其中METHOD为客户端使用的请求方法。
408 Request Timeout
请求超时,ALB主动断开连接。
客户端数据传输缓慢:在监听配置的连接请求超时时间(默认60秒)内,客户端只传输了部分数据(如仅传输了
HTTP Header而未传输HTTP Body)。建议抓包排查客户端是否存在性能瓶颈或其他异常。如果业务需要较长的请求发送时间,可适当调大连接请求超时时间。客户端到ALB网络质量差:TCP的RTT(Round Trip Time)较大或存在丢包等网络问题。建议排查访问日志的
request_time和tcpinfo_rtt字段,或在客户端进行网络诊断。ALB实例带宽限速:访问ALB实例的流量过大,触发带宽限速和丢包。建议通过云监控排查
出带宽和丢弃连接数指标。
414 URI Too Long
请求的URI长度超出限制,ALB或后端服务器拒绝服务。
ALB自身限制:ALB要求请求的URI长度不超过32KB,否则返回
414。建议缩短URI长度。如需传输大量数据,可使用POST方法,将数据放在请求体中传输,ALB支持最大50GB的POST请求体。后端服务限制:如果URI没有超过ALB限制,但后端服务有更严格的长度限制,则ALB会透传后端返回的
414状态码。请排查后端服务。
463
请求路径存在环路。请求通过ALB时,系统会在HTTP Header中追加ALICLOUD-ALB-TRACE字段(其值为基于规则ID生成的16位哈希值)。若检测到存在重复的规则ID,或ALICLOUD-ALB-TRACE字段数量超过16个,则判定为环路,ALB将停止转发请求以防止网络风暴引发的资源耗尽,并返回463状态码。
后端服务配置错误:后端服务配置有误导致请求被重新发送回ALB而形成环路。请排查ALB的后端服务配置。
网络架构设计缺陷:例如单条请求的转发链路上存在多个负载均衡实例。建议优化网络架构。
499 Client Closed Request
客户端主动断开连接。
客户端到ALB网络质量差:TCP的RTT(Round Trip Time)较大或存在丢包等网络问题。建议排查访问日志的
request_time和tcpinfo_rtt字段,或在客户端进行网络诊断。ALB实例带宽限速:访问ALB实例的流量过大,触发带宽限速和丢包。建议通过云监控排查
出带宽和丢弃连接数指标。后端处理请求时间过长:后端请求处理时间超过了客户端的请求超时时间。请检查访问日志中的
upstream_response_time字段,其值为后端处理请求的时间。如该值普遍较高,建议排查后端服务是否存在性能瓶颈。客户端设置的请求超时时间过短:客户端未发送完请求就因为超时关闭了连接。建议检查访问日志中的
request_time字段,该字段代表客户端请求的总时间,参考该字段的值设置更合理的客户端请求超时时间。客户端遇到未知问题:导致请求还未完成即提前关闭连接。建议排查客户端是否有提前关闭连接的行为。
500 Internal Server Error
后端服务器内部错误,无法执行请求。
后端直接返回500:建议检查访问日志,如
upstream_status为500,则很可能ALB透传了后端状态码。请排查后端服务。后端服务器异常关闭连接:后端服务器在发送完响应前即异常关闭连接。请在后端服务器抓包排查连接异常关闭的原因。
502 Bad Gateway
HTTP或HTTPS监听接收客户端请求后,ALB无法正常将请求转发至后端服务器或无法从后端服务器收到响应。
后端直接返回502:建议检查访问日志,如
upstream_status为502,则很可能ALB透传了后端状态码。请排查后端服务。后端返回其他错误状态码:例如
504、444,但ALB统一返回502。建议检查访问日志的status和upstream_status字段,并根据后端状态码排查故障原因。ALB与后端服务器TCP通信异常:请排查后端服务状态是否正常、服务端口是否正常监听或抓包查看TCP握手是否正常。
后端服务器Backlog已满:将导致新的连接请求被拒绝或丢弃。可在后端服务器执行
netstat -s | grep -i listen,查看是否有drop计数。客户端发送报文长度超过后端服务器的MTU:表现为健康检查或其他报文较短的包正常,但报文较长的包异常。建议在后端服务器抓包分析报文长度是否符合要求。
后端服务器响应的报文格式异常或有非法的HTTP标头:建议在后端服务器抓包,分析响应报文的格式是否规范。
后端服务器没有及时处理完请求:请检查后端服务器的日志,并查看CPU、内存等占用率。
503 Service Temporarily Unavailable
服务器暂时不可用,通常由于流量超限或后端服务不可用。
后端直接返回503:建议检查访问日志,如
upstream_status为503,则很可能ALB透传了后端状态码。请排查后端服务。客户端请求触发ALB限速:
通过云监控查看
每秒请求数指标。云监控展示分钟级数据,可能无法反映秒级超限情况。可检查访问日志,如
upstream_status字段的值为-,则请求未送达后端服务器。检查响应数据包头部,如包含
ALB-QPS-Limited:Limited字段,则请求触发了ALB的限速。
客户端直接访问ALB的IP或通过域名访问时DNS解析异常:可能导致流量集中在少数几个IP从而超限。建议客户端通过ALB的域名访问(参考为ALB配置CNAME解析),并确保DNS解析正常。
监听没有配置后端服务器或配置的后端服务器权重为
0。
504 Gateway Timeout
后端服务器响应超时。
后端直接返回504:建议检查访问日志,如
upstream_status为504,则很可能ALB透传了后端状态码。请排查后端服务。ALB与后端服务器建立连接超时:超时时间默认为5秒且无法修改。建议抓包排查后端服务器响应超时的原因。
后端服务器响应超时:连接请求超时时间默认为60秒。可查看云监控的
UpstreamResponseTime和访问日志的upstream_response_time来确定后端服务器是否响应超时。