keepalived+LVS超时设置产生的realserver的tcp连接不释放问题

redis的集群使用keepalived+LVS做的负载集群

persistent时间设置为30s

而ipvsadm的超时时间则为900 120 300【使用ipvsadm -l --timeout】第一个为tcp超时时间,第二个为tcpfin超时时间,第三个为udp超时时间

由于在这种设置下ActionConn的连接数在高频访问下总是不会释放,恒定在100,【5个客户端恒定TCP连接每台10个】

决定设短ipvsadm的tcp超时时间为5s,而tcpfin设置为120,udp为300

结果就悲催了

keepalived的ActionConn和InActConn的数量猛增猛降也还可以接受

realserver的tcp连接则出现了端口上连接堆积不释放的情况,从1000多梦飙升到8000多

客户端狂报远程连接中断的错误

 

仔细研读了LVS的原理和TCP有限状态机

发现了问题所在

tcp的连接超时时间严重小于tcpfin的时间,结果lvs就会每隔5s在即使tcp连接还健康存在的时候强制中断

由于客户端会恒定保持10个TCP连接,然后就不断的被中断,不断的重新建立

realserver因为tcp连接是被强制中断的,有可能还没有收到lvs转发的tcp操作完成信号,就会在端口上继续保持连接 ESTABLISHED

然后就悲催了

 

一个明显的失误就是tcp的连接超时时间远小于tcp完成超时时间,真是的~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值