windows 下解決 Time_Wait 和 CLOSE_WAIT 方法
2017-02-02 22:15:35
12702
windows 下解決 Time_Wait 和 CLOSE_WAIT 方法
解決CLOSE_WAIT的方法:(在客戶端修改)
1 一般原因都是TCP連接沒有調(diào)用關(guān)閉方法。需要應(yīng)用來處理網(wǎng)絡(luò)鏈接關(guān)閉。
2 對(duì)于Web請(qǐng)求出現(xiàn)這個(gè)原因,經(jīng)常是因?yàn)镽esponse的BodyStream沒有調(diào)用Close.
比如Widnows下:
使用HttpWebRequest 一定要保證GetRequestStream和GetResponse對(duì)象關(guān)閉,否則容易造成連接處于CLOSE_WAIT狀態(tài)
3 TCP的KeepLive功能,可以讓操作系統(tǒng)替我們自動(dòng)清理掉CLOSE_WAIT的連接。
但是KeepLive在Windows操作系統(tǒng)下默認(rèn)是7200秒,也就是2個(gè)小時(shí)才清理一次。往往滿足不了要求??梢哉{(diào)小該數(shù)值。
Windows下的調(diào)整方法為
HKEY_LOCAL_MACHINE/CurrentControlSet/Services/Tcpip/Parameters下的以下三個(gè)參數(shù):
KeepAliveInterval,設(shè)置其值為1000 www.tjdsmy.cn
KeepAliveTime,設(shè)置其值為300000(單位為毫秒,300000代表5分鐘)
TcpMaxDataRetransmissions,設(shè)置其值為5
Close_Wait引發(fā)的問題:
Close_Wait會(huì)占用一個(gè)連接,網(wǎng)絡(luò)可用連接小。數(shù)量過多,可能會(huì)引起網(wǎng)絡(luò)性能下降,并占用系統(tǒng)非換頁(yè)內(nèi)存。 尤其是在有連接池的情況下(比如HttpRequest)
會(huì)耗盡連接池的網(wǎng)絡(luò)連接數(shù),導(dǎo)致無?建立網(wǎng)絡(luò)連接
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]
“KeepAliveTime”=dword:006ddd00
“KeepAliveInterval”=dword:000003e8
“MaxDataRetries”=”5″