解决tcp连接有大量close_wait问题
问题现象
新部署的生产环境总有连接超时的情况,在服务器上通过以下脚本
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
查询,发现CLOSE_WAIT较多
CLOSE_WAIT 101
ESTABLISHED 227
TIME_WAIT 4
排查过程
tcpdump抓包
分析抓包日志,发现负载均衡服务器F5的IP与后面应用的服务器IP不在同一个网段
解决方案
当跨网段nat环境下,不能开启net.ipv4.tcp_tw_recycle和net.ipv4.tcp_tw_reuse,因为这俩参数NAT模式下可能引起连接RST,不同网段的话可能引起丢包。
注释掉这俩参数:
#net.ipv4.tcp_tw_recycle = 1
#net.ipv4.tcp_tw_reuse = 1
注意:修改时使用root的用户,并且需要关闭当前的xshell窗口后重启服务器上的应用才可生效