一噪裕、中間狀態(tài)time_wait,close_wait過多的危害?
(1)close_wait過多:建立連接會占用文件描述符股毫;而在liunx系統(tǒng)中膳音,一個進(jìn)程最大可以同時打開的文件描述符是有限的,當(dāng)達(dá)到上限時铃诬,服務(wù)端進(jìn)程無法再創(chuàng)建socket來響應(yīng)新的請求祭陷,導(dǎo)致服務(wù)不可用。
(2)time_wait過多:導(dǎo)致定義這個連接的四元組(客戶端IP地址和端口趣席,服務(wù)端IP地址和端口號)不能被使用兵志,導(dǎo)致端口號不足,服務(wù)器無法響應(yīng)宣肚。
二想罕、如何解決?
(1)time_wait:
????客戶端設(shè)置keep-alive霉涨,主動釋放請求按价;
????服務(wù)端開啟socket重用;
????擴(kuò)大端口號笙瑟;
????縮短time_wait時間楼镐,設(shè)置為1MSL
(2)close_wait:? ?主要是被動釋放的一方?jīng)]有主動調(diào)用closecket,可以在代碼上解決往枷。
三框产、為什么要等待2MSL?
(1)保證連接可靠的釋放
(2)使舊的數(shù)據(jù)包在網(wǎng)絡(luò)中過期消失,防止下一次使用同一四元組收到上一次的數(shù)據(jù)