修改Time_Wait參數的方法 (在服務端修改)
Windows下在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters,添加名為TcpTimedWaitDelay的
DWORD鍵,設置為30,以縮短TIME_WAIT的等待時間
解決CLOSE_WAIT的方法:(在客戶端修改)
1 一般原因都是TCP連接沒有調用關閉方法。需要應用來處理網絡鏈接關閉。
2 對於Web請求出現這個原因,經常是因為Response的BodyStream沒有調用Close.
比如Widnows下:
使用HttpWebRequest 一定要保證GetRequestStream和GetResponse對象關閉,否則容易造成連接處於CLOSE_WAIT狀態
3 TCP的KeepLive功能,可以讓操作系統替我們自動清理掉CLOSE_WAIT的連接。
但是KeepLive在Windows操作系統下默認是7200秒,也就是2個小時才清理一次。往往滿足不了要求。可以調小該數值。
Windows下的調整方法為
HKEY_LOCAL_MACHINE/CurrentControlSet/Services/Tcpip/Parameters下的以下三個參數:
KeepAliveInterval,設置其值為1000 www.2cto.com
KeepAliveTime,設置其值為300000(單位為毫秒,300000代表5分鍾)
TcpMaxDataRetransmissions,設置其值為5
Close_Wait引發的問題:
Close_Wait會占用一個連接,網絡可用連接小。數量過多,可能會引起網絡性能下降,並占用系統非換頁內存。 尤其是在有連接池的情況下(比如HttpRequest)
會耗盡連接池的網絡連接數,導致無法建立網絡連接
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
“KeepAliveTime”=dword:006ddd00
“KeepAliveInterval”=dword:000003e8
“MaxDataRetries”=”5″