太多的TIME_WAIT状态连接!

我一整天都在读这本书,从我所收集的内容来看,TIME_WAIT是一个相对无害的状态。 即使太多,也应该是无害的。

但是,如果他们跳到我过去24小时看到的数字,那么真的是错的!

[root@1 ~]# netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n 1 established) 1 Foreign 12 CLOSE_WAIT 15 LISTEN 64 LAST_ACK 201 FIN_WAIT2 334 CLOSING 605 ESTABLISHED 816 SYN_RECV 981 FIN_WAIT1 26830 TIME_WAIT 

这个数字从2万到3万+波动(到目前为止,我见过的最多的是32,000)。 令我担心的是,它们都是来自各种随机位置的不同IP地址。

现在这应该是(或应该是)DDoS攻击。 我知道这个事实,但我不会进入无聊的细节。 它起初是一个DDoS,它确实影响了我的服务器的性能几分钟。 之后,一切都恢复正常了。 我的服务器负载是正常的。 我的互联网stream量是正常的。 没有服务器资源正在被滥用。 我的网站加载正常。

我也有IPTABLES禁用。 这也有一个奇怪的问题。 每当我启用防火墙/ iptables,我的服务器开始遇到丢包。 很多。 大约有50%-60%的数据包丢失。 在启用防火墙的一小时内或几个小时内发生。 只要我禁用它,从我testing他们的所有地点的ping响应开始清理并再次稳定。 很奇怪。

自昨天以来,TIME_WAIT国家的关系一直在这些数字上下波动。 现在24小时,我已经有了,虽然没有以任何方式影响性能,但是令人不安。

我目前的tcp_fin_timeout值是30秒,从默认的60秒。 但是,这似乎根本没有帮助。

任何想法,build议? 任何东西都将不胜感激,真的!

关于时间等待的一个很好的讨论是由如何在等待中强行closures套接字来给出的。

根据这个参考文献,时间等待连接的数量应该对应于最近4分钟的stream量。 这些数字大概匹配吗?

如果连接处于closures状态,而另一端没有正确挂起,则会出现此问题。 这可能是由于恶意原因,或者是因为您的networking堆栈中存在问题。

你似乎有iptables问题的事实也指出了你的networking堆栈的问题。

如果您有连接到另一个networking端口,则需要切换到另一个networking端口。 这个问题也可能是上游的防火墙,路由器或坏人。

还有一些关于tcp_tw_recycle的RedHat(+ Centos?)设置问题的报告。 你可能想看看。