TCP/IP 選項TcpTimedWaitDelay設置
當TCP連接被關(guān)閉時,,{ Protocol, Local IP, Local Port, Remote IP, Remote Port}五元組就進入TIME_WAIT狀態(tài),,默認時間是4分鐘??梢酝ㄟ^一組命令看看tcp的連接狀態(tài):
netstat -ano>>c:\port.txt
本地ip,,遠程ip,遠程端口都是固定的,,只有本地端口是變化的,本地端口只能使用1024-5000,,因此如果在4分鐘內(nèi)發(fā)起了大約4000個連接,,這時就會發(fā)生異常,下面是使用WCF,,客戶端的異常:
System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted 192.168.101.5:8888
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.Sockets.Socket.Connect(EndPoint remoteEP)
at System.ServiceModel.Channels.SocketConnectionInitiator.Connect(Uri uri, TimeSpan timeout)
TCP有個選項 TcpTimedWaitDelay:
確定 TCP/IP 可釋放已關(guān)閉連接并重用其資源前,,必須經(jīng)過的時間,。關(guān)閉和釋放之間的此時間間隔通稱 TIME_WAIT 狀態(tài)或兩倍最大段生命周期(2MSL)狀態(tài)。此時間期間,,重新打開到客戶機和服務器的連接的成本少于建立新連接,。減少此條目的值允許 TCP/IP 更快地釋放已關(guān)閉的連接,為新連接提供更多資源,。如果運行的應用程序需要快速釋放和創(chuàng)建新連接,,而且由于 TIME_WAIT 中存在很多連接,導致低吞吐量,,則調(diào)整此參數(shù),。
Exchange Server 2007 服務器的缺省值是60,http://technet.microsoft.com/zh-cn/library/bb397379.aspx
-
打開注冊表編輯器,,如 Regedit.exe 或 Regedt32.exe,。
-
導航到:HKLM\System\CurrentControlSet\Services\Tcpip\Parameters
-
雙擊 TcpTimedWaitDelay,然后將“數(shù)值數(shù)據(jù)”字段設置為 60(十進制),。
-
關(guān)閉注冊表編輯器,,然后重新啟動計算機。
MaxUserPort
描述:
確定在應用程序從系統(tǒng)請求可用用戶端口時,,TCP/IP 可指定的最高端口號,。
如何查看或設置:
使用 regedit 命令訪問 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 注冊表子鍵并創(chuàng)建名為 MaxUserPort 的新 REG_DWORD 值。停止并重新啟動系統(tǒng),。
注:當在 Windows NT 或 Windows 2000 操作系統(tǒng)上調(diào)整 erver 時,,同時使用這兩個參數(shù)。