windows 11默认启用半开连接速率限制(enableconnectionratelimiting=1),导致tcp并发连接卡在几十至两百;需禁用该限制并调大maxuserport、maxfreetcbs、maxhashtablesize等参数,方可突破5000+并发。

当您在Windows 11上运行爬虫、API批量调用或实时数据采集工具时,发现每秒新建TCP连接频繁卡在几十到两百之间,无法突破,根本原因是系统默认启用了半开连接速率限制(EnableConnectionRateLimiting),该机制会主动丢弃SYN包,导致连接建立失败而非超时——这不是网络或代码问题,而是注册表级硬拦截。
确认是否受半开连接速率限制
按下Win + R→ 输入regedit→ 回车打开注册表编辑器。
导航至路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters。
在右侧窗格查找名为EnableConnectionRateLimiting的DWORD值:若不存在,说明系统已无该限制;若值为1,则半开连接被启用(典型上限仅10–100);若值为0,该项已禁用。
禁用TCP半开连接速率控制(必须最先执行)
右键右侧空白处 → 新建 → DWORD (32位) 值 → 命名为EnableConnectionRateLimiting。
双击该值,将“数值数据”设为0,点击确定。
【此步不可跳过,否则后续所有端口与TCB扩容均无法生效】
扩大动态端口范围并匹配TCB资源
第一步:修改MaxUserPort
在同一注册表路径下,新建或修改DWORD (32位) 值MaxUserPort,将其数值数据设为65534(默认为5000,仅支持约3977个并发出站连接)。
第二步:提升TCB资源上限
新建或修改DWORD (32位) 值MaxFreeTcbs,设为65536(每连接约占用1KB内存,确保物理内存 ≥ 128MB)。
第三步:同步哈希表大小
新建或修改DWORD (32位) 值MaxHashTableSize,设为65536(必须是2的幂,且≥ MaxFreeTcbs,否则系统启动时会自动降级使用较小值)。
设置最大理论连接数并优化保活参数
方法一:注册表直接写入
在同一路径下,新建DWORD (32位) 值TcpNumConnections,数值数据填入十六进制00fffffe(即十进制16777214)。
方法二:命令行即时调整全局TCP行为(无需重启)
以管理员身份打开终端,依次执行:
netsh int tcp set global autotuninglevel=highlyrestricted
netsh int tcp set global chimney=enabled
netsh int tcp set global timestamps=enabled
方法三:缩短TIME_WAIT释放周期
新建DWORD (32位) 值TcpTimedWaitDelay,数值数据设为30(单位秒,原默认240秒,大幅加快端口复用速度)。
验证并发连接能力是否生效
以管理员身份运行PowerShell,执行:
netsh int ipv4 show dynamicportrange tcp
确认输出中“Number of Ports”≥64510;再执行:
netstat -an | findstr ":ESTABLISHED" | measure-object -line
观察当前活跃连接数是否可稳定突破5000+;若仍受限,检查应用层是否复用连接(如HTTP/1.1未启用keep-alive)或存在连接泄漏。











