很多人来这里的原因是什么TIME_WAIT
?即使我们有很少的ESTABLISHED、SYN连接。
[root@www ~]# netstat -natp | grep "210.XX.XX.XX:80" | awk '{print $6}' | sort | uniq -c
1 ESTABLISHED
12 FIN_WAIT2
9903 TIME_WAIT
答案1
为了解释这一点,您需要对 TCP/IP 通信有很好的了解。以最简单的形式,当有人连接到您的 Web 服务器时,您的服务器会假设该连接将持续一段时间,并为该通信分配一个端口,并为该通信通道设置超时。从输出中看到netstat
,如果另一端的人(即客户端)停止通信,通道或端口将进入 TIME_WAIT 状态。也许他或她所需要的只是看一页就完成了。但你的服务器无法知道这一点。它是在假设通信需要很长时间的情况下运行的。
这样做的主要原因是,建立一个新的通信通道比保留现有的通信通道成本更高(从资源角度来看),特别是当客户端要从服务器发出多个请求时。如果您想更深入地了解它,这里有一篇关于它的很好的文章:http://www.serverframework.com/asynchronousevents/2011/01/time-wait-and-its-design-implications-for-protocols-and-scalable-servers.html
如果您对如何消除它们或防止它们频繁发生以及它们为何以摘要形式发生感兴趣,那么您可能需要浏览以下另一页:http://www.fromdual.com/huge-amount-of-time-wait-connections