1. 程式人生 > >修改XP最大併發連線數的方法(非最大半開連線數)

修改XP最大併發連線數的方法(非最大半開連線數)

最近寫了一個EPOLL的server,正在用WINDOWS下的多執行緒程式做壓力測試,一個程序開500個執行緒,連線到SERVER併發送少量資料,但在XP系統上,在開到第8個程序的時候連線成功數目總是小於500,也就是說整個系統能供使用者主動開啟的連線數不到4000個,在網上查找了一些資料,解決了這個問題,解決方法如下:

修改(新增)登錄檔,並重新啟動系統:

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services 下面:

TcpNumConnections
Key: Tcpip/Parameters
取值型別:REG_DWORD - Number
取值範圍:0 - 0xfffffe
預設值:0xfffffe
描述:本引數限制可以同時開啟的TCP連線的數量

MaxUserPort
key: Tcpip/Parameters
取值型別:REG_DWORD - Number
取值範圍:5000-65534 (十進位制)
預設值:0x1388 (5000 十進位制)
描述:控制一個應用程式可以開啟的最多埠數量。通常,短命的埠在1024-5000之間分配。
當試圖發起5000以上埠的連線,系統將出現WSAENOBUFS(10055)錯誤:因為佇列滿或者系統
缺乏足夠的緩衝空間。

做法:將這個鍵值修改為你想要的最大主動開啟連結數就行了。

另附修改系統2MSL時間,也就是連線TIME_WAIT時間的方法,這個在做頻繁連線關閉這樣的測試的時候會有用:

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/ Services/TCPIP/Parameters 登錄檔子鍵並建立名為 TcpTimedWaitDelay 的新 REG_DWORD 值。 將此值設定為十進位制 30,其為十六進位制 0x0000001e。該值將等待時間設定為 30 秒。 停止並重新啟動系統。 預設值:0xF0,它將等待時間設定為 240 秒(4 分鐘)。

以上解決辦法皆來自網路,個人試驗證實有效。