负载ipvsadm短连接出现大量FIN_WAIT问题排查和解决
lvs+keepalived短连接负载出现大量FIN_WAIT
内核高于4.1的Linux系统(kylinV10和OpenEuler22.03),通过修改系统配置均不生效,比如下列操作,均未生效,最终通过修改代码so_linger来解决(客户端)
FIN_WAIT打满后,性能逐渐降低
关注这里的最后一句:Linux上的TIME_WAIT和tcp_fin_timeout - -见 - 博客园 (cnblogs.com)
修改方法参考:从一次经历谈 TIME_WAIT 的那些事 | 酷 壳 - CoolShell
修改方法:
结果很理想:
备注:
修改timeout可临时解决
ipvsadm --set tcp tcpfin udp
ipvsadm --set 900 3 3
FIN_WAIT仍然存在,但压测未报大量错误,备机启动后,可恢复流量
注意:tcpfin调为2时,压测报timeout
补充C代码:
参考:https://blog.csdn.net/u012635648/article/details/80279338