修改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 分钟)。

 

以上解决办法皆来自网络,个人试验证实有效。

 

你可能感兴趣的:(修改XP最大并发连接数的方法(非最大半开连接数))