
很多人來這裡的原因是什麼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