网络:为什么会出现大量的time_wait状态
TIME_WAIT狀態是什么?
TIME_WAIT狀態是主動關閉TCP連接的一方(即先發起FIN包的一方),在發送完最后一個ACK包后進入的狀態。系統需要在TIME_WAIT狀態下等待2MSL(maximum segment lifetime )后才能釋放連接(端口)。根據RFC 793 MSL是2分鐘,一般的TCP實現有30秒、1分鐘和2分鐘不等。
進入TIME_WAIT狀態等待2MSL主要有兩個目的:
一方面是主動關閉連接的一方在對方沒有收到最后一個ACK包時(這時對方還會重發FIN,收到兩個FIN的時間間隔一定小于2MSL)有時間可以重發ACK包;
另一方面處于TIME_WAIT的連接(IP和端口組合)不能重用,這樣可以保證被重新分配的socket不會受到之前殘留的延遲重發報文影響。
?
分析
?????? ?由于主動關閉TCP連接的一方才會進入TIME_WAIT狀態,一般情況服務器端不會出現TIME_WAIT狀態,因為大多數情況都是客戶端主動發起連接并主動關閉連接。但是某些服務如pop/smtp、ftp卻是服務端收到客戶端的QUIT命令后主動關閉連接,這就造成這類服務器上容易出現大量的TIME_WAIT狀態的連接,而且并發量越大處于此種狀態的連接越多。另外,對于被動關閉連接的服務在主動關閉客戶端非法請求或清理長時間不活動的連接時(這種情況很可能是客戶端程序忘記關閉連接)也會出現TIME_WAIT的狀態。
什么情況下服務器會進行主動關閉的情況?
1)短連接的方式。如http服務器。
2)已經進入了瓶頸。即連接數已經達到了極限值。
?
更多詳細參見:https://blog.csdn.net/u013616945/article/details/77510925
總結
以上是生活随笔為你收集整理的网络:为什么会出现大量的time_wait状态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 赶尽杀绝TCP
- 下一篇: 后台开发技术--接入层设计