修改win注册表取消TCP连接数的限制
修改w i n注册表取消
T C P连接数的限制 This manuscript was revised on November 28, 2020
w i n7注册表修改,取消T C P连接数的限制
余勇俊
在注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 里
在Windows7下,用户必须右键-新建DWORD(32-bit)值,并命名为
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters 依次展开:
新建MaxUserPort:
输入数值数据ffff:
然后确定。如果原来就已经MaxUserPort项,修改它的值为ffff即可。
最大TCP连接数
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameter s]
TcpNumConnections=0x00fffffe(Default=16,777,214)
最大动态端口数
TCP客户端和服务器连接时,客户端必须分配一个动态端口,默认情况下这个
动态端口的分配范围为1024-5000,也就是说默认情况下,客户端最多可以同
时发起3977个Socket连接。我们可以修改如下注册表来调整这个动态端口的范围
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameter s]
MaxUserPort=5000(Default=5000,Max=65534)
最大TCB数量
系统为每个TCP连接分配一个TCP控制块(TCPcontrolblockorTCB),这个控制块用于缓存TCP连接的一些参数,每个TCB需要分配0.5KB的pagepool和
0.5KB的Non-pagepool,也就说,每个TCP连接会占用1KB的系统内存。
系统的最大TCB数量由如下注册表设置决定
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameter s]
MaxFreeTcbs=2000(Default=RAMdependent,butusualPro=1000,Srv=2000)
非Server版本,MaxFreeTcbs的默认值为1000(64M以上物理内存)
Server版本,这个的默认值为2000。
也就是说,默认情况下,Server版本最多同时可以建立并保持2000个TCP连接。
最大TCBHashtable数量
TCB是通过Hashtable来管理的,下面注册表设置决定了这个Hashtable的大
小
HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\Tcpip\Parameters] MaxHashTableSize=512(Default=512,Range=64-65536)
这个值指明分配pagepool内存的数量,也就是说,如果MaxFreeTcbs=1000,则pagepool的内存数量为500KB
那么MaxHashTableSize应大于500才行。这个数量越大,则Hashtable的冗余度就越高,每次分配和查找TCP连接用时就越少。这个值必须是2的幂,且最大为65536.
IBMWebSphereVoiceServer在windowsserver2003下的典型配置
这是IBMWebSphereVoiceServer的典型配置,大家可以做个参考。IBMWebSphereVoiceServer配置
MaxUserPort=65534(Decimal)
MaxHashTableSize=65536(Decimal)
MaxFreeTcbs=16000(Decimal)
这里我们可以看到MaxHashTableSize被配置为比MaxFreeTcbs大4倍,这样可以大大增加TCP建立的速度。
修改完注册表后重启电脑生效。
重启系统后,在cmd命令行,输入:netstat-a-s查看本机的tcp连接数的情况。下面是LR11施加1000并发用户的压力下,win764位系统的对外TCP连接数统计,有8900个。