Linux实例中FIN_WAIT2状态的TCP链接过多
发布时间:2021-02-19 点击数:578
问题现象
FIN_WAIT2状态的TCP链接过多。
原因分析
- 在HTTP服务中,Server由于某种原因会主动关闭连接,例如KEEPALIVE超时的情况下。作为主动关闭连接的Server就会进入FIN_WAIT2状态。
- 在TCP/IP协议栈中,存在半连接的概念,FIN_WAIT2状态不算超时,如果Client不关闭,FIN_WAIT2状态将保持到系统重启,越来越多的FIN_WAIT2状态会致使内核Crash。
- 建议调小net.ipv4.tcp_fin_timeout参数的值,以便加快系统关闭处于FIN_WAIT2状态的TCP连接。
解决方法
-
执行vi
/etc/sysctl.conf命令,修改或增加以下内容。
net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_max_tw_buckets = 5000
-
执行sysctl
-p命令,使配置生效。