解决 linux 上 tcp 连接大量 TIME_WAIT 的问题

今天做系统例行监测,查看了一下发现系统中存在大量处于TIME_WAIT状态的tcp端口:

# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

在网上查阅了一些tcp参数的相关资料,最后通过修改了几个系统内核的tcp参数缓解了该问题:

#vi /etc/sysctl.conf 
  net.ipv4.tcp_tw_reuse = 1
  net.ipv4.tcp_tw_recycle = 1
 
#sysctl -p
其中:
net.ipv4.tcp_tw_reuse = 1
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1
表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。

修改完成并生效后,系统中处于TIME_WAIT状态的tcp端口数量迅速下降到100左右。

标签: TIME_WAIT
评论: 0 | 引用: 0 | 阅读: 6786