Article / 文章中心

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连接。
解决方法
  1. 执行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
  2. 执行sysctl -p命令,使配置生效。
     
    如果您有其他问题,可以联系北京志远天成阿里云代理商,为您提供一对一专业全面的技术服务,同时新老阿里云会员,均可享受我公司代理商价格,欢迎咨询欢迎咨询.gif