全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

负载均衡超时问题

最近更新时间:2023-12-27 15:47:01

1. 负载均衡各类型监听连接超时时间如下

监听协议

含义

超时时间(单位:秒)

TCP

连接超时时间

配置TCP连接超时,连接空闲时间超过该时长后,负载均衡会主动断开该连接。

900

UDP

会话超时时间

超过会话超时时间后,后端KEC回应SLB的转发,底层会因为UDP会话消亡,无法转发,而将后端响应数据包丢弃。

120

HTTP/HTTPS

连接空闲超时时间

在超时时间内一直没有访问请求,负载均衡会暂时中断当前连接,直到下一次请求来时重新建立新的连接。

300

连接请求超时时间

在连接请求超时时间内后端服务器一直没有响应一个请求时,负载均衡将放弃等待,给客户端返回HTTP 504错误码。

60

注:当前负载均衡未开放超时时间给用户自行设置

2. HTTP Keep-alive 超时时间

如果客户端访问 SLB HTTP 监听时使用长连接,那么这条连接最长的空闲时间为 300 秒,即如果超过 300 秒没有发送任何 HTTP 请求,这条连接将会被 SLB 主动断开。如果您的业务可能会出现超过 300 秒的空闲,需要检测连接的断开并重新发起连接。

3.为什么会碰到 VIP 连接访问超时?

注:访问超时场景很多,本文档主要是从服务端入手分析

情况一:VIP 被安全防护

如流量黑洞和清洗,WAF 防护(waf 的特点是为建连后向 client 和 lvs 双向发送rst 报文)。

情况二:客户端端口不足

尤其容易发生在压测的时候,客户端端口不足会导致建立连接失败,负载均衡默认会抹除TCP连接的 timestamp 属性,linux 协议栈的tw_reuse ( time_wait 状态连接复用)无法生效,time_wait 状态连接堆积导致客户端端口不足。

解决方法: 客户端端使用长连接代替短连接。使用 RST 报文断开连接( socket 设置 SO_LINGER 属性),而不是发 FIN 包这种方式断开。

情况三:后端服务器 accept 队列满

后端服务器 accept 队列满,导致后端服务器不回复 syn_ack 报文,客户端超时。

解决方法:默认的 net.core.somaxconn 参数为 128 ,执行 sysctl -w net.core.somaxconn=1024 或者其它更大的值,并重启后端服务器上的应用。

情况四:从4层负载均衡后端服务器访问该4层负载均衡 VIP

4 层负载均衡,在该负载均衡的后端服务器上再去访问该负载均衡 VIP,这个目前是无法支持的,会导致连接失败,常见的场景是用户后端应用使用 URL 拼接的方式跳转访问。

情况五:对连接超时的 rst 处理不当

负载均衡上建立 TCP 连接后如果 900s 未活动,则会向 client 和 rs 双向发送 rst 断开连接,有的应用对 rst 异常处理不当,可能会对已关闭的连接再次发送数据导致应用超时。
注: 这种情况建议调整后端主机系统内核参数 net.ipv4.tcp_keepalive_time 为小于 900s 的值。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈