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