负载均衡SLB实例的服务地址访问超时

免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

问题描述

负载均衡SLB实例的服务地址访问超时。

问题原因

问题原因可能有如下几点:

  • SLB实例的服务地址被安全防护,如流量黑洞和流量清洗、WAF防护。详情请参见流量黑洞和流量清洗WAF防护
  • 客户端端口不足。尤其在进行压力测试时,客户端端口不足会导致建立连接失败,负载均衡SLB默认会抹除TCP连接的timestamp属性,Linux协议栈的tw_reuse(time_wait状态连接复用)无法生效,time_wait状态连接堆积导致客户端端口不足,最终访问超时。
  • 后端服务器accept队列满,导致后端服务器不回复syn_ack报文,客户端超时。
  • 某些应用对连接超时的RST报文处理不当。负载均衡SLB建立TCP连接后,如果900秒未活动,则会向客户端和服务器双向发送RST报文以断开连接。有些应用对RST异常处理不当,可能会对已关闭的连接再次发送数据,导致应用超时。
  • 后端服务器访问四层负载均衡SLB的服务地址会导致连接失败,常见的场景有:后端应用使用URL拼接的方式跳转访问。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

请根据问题原因匹配对应的解决方法:

  • SLB实例的服务地址被安全防护
    登录云盾DDoS防护产品控制台,检查SLB实例的状态,详情步骤可参阅资产中心
  • 客户端端口不足
    客户端使用长连接代替短连接,通过RST报文断开连接,socket设置SO_LINGER属性 ,而不是通过FIN包的方式断开连接。
  • 后端服务器accept队列满
    如果后端服务器中默认的net.core.somaxconn的值为128,您可以参考如下命令,更改该参数的值,并重启后端服务器上的应用。
    sysctl -w net.core.somaxconn=1024
    说明:此处仅为建议,您可以根据业务环境进行调整。建议提前创建快照或备份相关数据文件。
  • 某些应用对连接超时的RST报文处理不当
    建议优化客户端程序,及时关闭已使用完毕的连接。
  • 后端服务器访问四层负载均衡SLB的服务地址会导致连接失败
    建议改用七层的HTTP监听HTTPS监听

适用于

  • 负载均衡SLB