Linux中出现大量TIME_WAIT的解决办法


实际工作中,最好让运维去调整。


查看命令:netstat -ae | grep "TIME_WAIT" | wc -l

通过调整内核参数解决:vi /etc/sysctl.conf ,加入以下内容

  • net.ipv4.tcp_tw_reuse = 1  

    开启重用,允许将TIME-WAIT sockets重新用于新的TCP连接

  • net.ipv4.tcp_tw_recycle = 1

    开启TCP连接中TIME-WAIT sockets的快速回收

  • net.ipv4.tcp_fin_timeout = 30

    修改系统默认的TIMEOUT时间

  • net.ipv4.tcp_keepalive_probes = 5

    减少超时前的探测次数

  • net.ipv4.tcp_keepalive_intvl = 20

    探测消息发送的频率

  • net.ipv4.ip_local_port_range = 1024 65000

    表示用于向外连接的端口范围

  • net.ipv4.tcp_max_syn_backlog = 8192

    表示SYN队列的长度,默认为1024,加大之后,可以容纳更多等待连接的网络连接数

  • net.ipv4.tcp_syncookies = 1 

    开启SYN Cookies,当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN***

然后执行/sbin/sysctl -p 让参数生效