Apr
19
2021
Linux实例中FIN_WAIT2状态的TCP链接过多
问题现象
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命令,使配置生效。
本公司销售:阿里云新/老客户,只要购买阿里云,即可享受折上折优惠!>
我有话说: