问题原因:
Windows 部分版本 提供给 TCP/IP 默认的链接端口范围为 1024-5000, 并且默认需要4分钟来释放端口,压力测试时,短时间内系统有大量的客户端发起连接,导致系统端口占满。
我现在的机器默认端口是足够了,但是一直没有释放端口, 需要修改下默认释放端口的时间,否则你要一直等端口释放了才能继续测试。
来看看 microsoft 给出的解决方案:参考连接
错误 WSAENOBUFS (10055) - Windows Client | Microsoft Docs
在"适用"部分中包含的产品中,临时 TCP 端口的默认最大数量为 5000。 这些产品中添加了一个新参数。 若要增加临时端口的最大数量,请按照以下步骤 *** 作:
- 启动注册表编辑器。
- 在注册表中查找以下子项,然后单击"**参数":
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
- 在" 编辑" 菜单上,单击 "新建",然后添加以下注册表项:
值名称:MaxUserPort
值类型:DWORD 值数据:65534 有效范围:5000-65534 (decimal) Default: 0x1388 (5000 decimal) Description: This parameter controls the maximum port number that is used when a program requests any available user port from the system. 通常,在 1024 (5000(包含 1024 和 5000)之间分配临时) 短期端口。 在安全公告 MS08-037 发布后,Windows Server 2003 的行为更改为与 Windows Server 2008 和 Windows Vista 的行为更加匹配
具体 *** 作如下:
1. 进入注册表 2. 找到 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters3. 右键点击 Parameters 新建 DWROD,命名为 MaxUserPort 4. 设置 MaxUserPort 的值 最大值为 65534
5. 新建 DWORD TCPTimedWaitDelay 值设置为 20 (参考 步骤 3和4 的新建和设置做法)
可以重用关闭的端口之前等待的时间,设置为20s,也就是如果某个端口关闭了,等待20s就可以重用该端口
6. 重启机器
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)