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)已經進入了瓶頸。即連線數已經達到了極限值。
更多詳細參見:
陣列越界會出現什麼 為什麼會出現刺繡?
為什麼會出現刺繡,可能各個地方的繡種不同,答案也不盡相同。查翻資料,今天談談地處江南地區的 蘇繡 是為何出現。蘇繡的出現離不開四個字 斷髮文身 斷髮文身的古人 蘇繡至今已有2000餘年的歷史,傳說 於仲雍的孫女 女紅 首製繡衣。古代周太王古公亶父的兒子太伯 仲雍來到今江南蘇州一帶建立了吳國,當地人有...
為什麼會出現死鎖
今天在閱讀 我在思考乙個 如何可以抵擋得住大的迸發量,我先羅列我應該會設計的方案,然後再分析其中實現應該注意的地方 首先如果資料量很大的話,我們是要分散請求的,也就是需要伺服器來聯合作戰,當然這裡我們就需要有乙個好的輪詢的演算法,不然會出現資料無法保持一致而導致程式中隱藏bug,所以說,考慮的方面不...
為什麼會出現lvs nginx
一 ngix 應用層 網路七層負載均衡 1 非同步 請求資料和相應資料都要經過ngix,ngix和客戶端建立連線 2 輪詢所有的tomcat伺服器,保證請求成功或者最後一台tomcat伺服器也請求失敗 二 lvs 網路層 網路四層負載均衡 1 同步 接受請求資料,lvs 到伺服器,伺服器直接和客戶端...