ALB异常状态码

建议开启ALB访问日志,帮助快速定位ALB返回的HTTP异常。用户可以优先排查访问日志中的ALB状态码(status)和后端状态码(upstream_status)是否相同。若两者相同,很可能ALB直接透传了后端状态码,建议优先排查后端服务的异常原因。

400 Bad Request

请求格式异常。

  • 后端直接返回400:建议检查访问日志,如upstream_status的值为400,则很可能ALB透传了后端状态码。请排查后端服务。

  • HTTP请求发送至HTTPS监听:ALBHTTPS监听会拒绝非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网络质量差:TCPRTT(Round Trip Time)较大或存在丢包等网络问题。建议排查访问日志的request_timetcpinfo_rtt字段,或在客户端进行网络诊断。

  • ALB实例带宽限速:访问ALB实例的流量过大,触发带宽限速和丢包。建议通过云监控排查出带宽丢弃连接数指标。

414 URI Too Long

请求的URI长度超出限制,ALB或后端服务器拒绝服务。

  • ALB自身限制:ALB要求请求的URI长度不超过32KB,否则返回414。建议缩短URI长度。如需传输大量数据,可使用POST方法,将数据放在请求体中传输,ALB支持最大50GBPOST请求体。

  • 后端服务限制:如果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网络质量差:TCPRTT(Round Trip Time)较大或存在丢包等网络问题。建议排查访问日志的request_timetcpinfo_rtt字段,或在客户端进行网络诊断。

  • ALB实例带宽限速:访问ALB实例的流量过大,触发带宽限速和丢包。建议通过云监控排查出带宽丢弃连接数指标。

  • 后端处理请求时间过长:后端请求处理时间超过了客户端的请求超时时间。请检查访问日志中的upstream_response_time字段,其值为后端处理请求的时间。如该值普遍较高,建议排查后端服务是否存在性能瓶颈。

  • 客户端设置的请求超时时间过短:客户端未发送完请求就因为超时关闭了连接。建议检查访问日志中的request_time字段,该字段代表客户端请求的总时间,参考该字段的值设置更合理的客户端请求超时时间。

  • 客户端遇到未知问题:导致请求还未完成即提前关闭连接。建议排查客户端是否有提前关闭连接的行为。

500 Internal Server Error

后端服务器内部错误,无法执行请求。

  • 后端直接返回500:建议检查访问日志,如upstream_status500,则很可能ALB透传了后端状态码。请排查后端服务。

  • 后端服务器异常关闭连接:后端服务器在发送完响应前即异常关闭连接。请在后端服务器抓包排查连接异常关闭的原因。

502 Bad Gateway

HTTPHTTPS监听接收客户端请求后,ALB无法正常将请求转发至后端服务器或无法从后端服务器收到响应。

  • 后端直接返回502:建议检查访问日志,如upstream_status502,则很可能ALB透传了后端状态码。请排查后端服务。

  • 后端返回其他错误状态码:例如504444,但ALB统一返回502。建议检查访问日志的statusupstream_status字段,并根据后端状态码排查故障原因。

  • ALB与后端服务器TCP通信异常:请排查后端服务状态是否正常、服务端口是否正常监听或抓包查看TCP握手是否正常。

  • 后端服务器Backlog已满:将导致新的连接请求被拒绝或丢弃。可在后端服务器执行netstat -s | grep -i listen,查看是否有drop计数。

  • 客户端发送报文长度超过后端服务器的MTU:表现为健康检查或其他报文较短的包正常,但报文较长的包异常。建议在后端服务器抓包分析报文长度是否符合要求。

  • 后端服务器响应的报文格式异常或有非法的HTTP标头:建议在后端服务器抓包,分析响应报文的格式是否规范。

  • 后端服务器没有及时处理完请求:请检查后端服务器的日志,并查看CPU、内存等占用率。

503 Service Temporarily Unavailable

服务器暂时不可用,通常由于流量超限或后端服务不可用。

  • 后端直接返回503:建议检查访问日志,如upstream_status503,则很可能ALB透传了后端状态码。请排查后端服务。

  • 客户端请求触发ALB限速

    • 通过云监控查看每秒请求数指标。

    • 云监控展示分钟级数据,可能无法反映秒级超限情况。可检查访问日志,如upstream_status字段的值为-,则请求未送达后端服务器。

    • 检查响应数据包头部,如包含ALB-QPS-Limited:Limited字段,则请求触发了ALB的限速。

  • 客户端直接访问ALBIP或通过域名访问时DNS解析异常:可能导致流量集中在少数几个IP从而超限。建议客户端通过ALB的域名访问(参考ALB配置CNAME解析),并确保DNS解析正常。

  • 监听没有配置后端服务器或配置的后端服务器权重为0

504 Gateway Timeout

后端服务器响应超时。

  • 后端直接返回504:建议检查访问日志,如upstream_status504,则很可能ALB透传了后端状态码。请排查后端服务。

  • ALB与后端服务器建立连接超时:超时时间默认为5秒且无法修改。建议抓包排查后端服务器响应超时的原因。

  • 后端服务器响应超时连接请求超时时间默认为60秒。可查看云监控的UpstreamResponseTime和访问日志的upstream_response_time来确定后端服务器是否响应超时。