解决 JMeter 端口(Address already in use: connect)耗尽问题

设置动态端口范围(解决 JMeter 端口耗尽问题),需注意系统对动态端口的默认限制 (旧版 Win7 动态端口范围通常为 49152~65535,共 16384 个端口)。以下是完整方案:

一、统计当前已使用的端口数

管理员身份 打开 cmd,执行:

bash 复制代码
netstat -ano | find /c "TCP"

二、确认当前动态端口范围

管理员身份 打开 cmd,执行:

bash 复制代码
netsh int ipv4 show dynamicport tcp

默认输出(Win7 典型配置):

复制代码
协议 tcp 动态端口范围
---------------------------------
启动端口 : 49152
端口数 : 16384

三、修改动态端口范围(扩大范围)

命令(管理员身份执行):

win7修改

bash 复制代码
netsh int ipv4 set dynamicportrange protocol=tcp startport=1025 numberofports=64510

win10修改

bash 复制代码
netsh int ipv4 set dynamicport tcp start=1024 num=64512
  • start=1024:动态端口起始值(最小可用端口)。
  • num=64512:端口数量(1024 + 64512 - 1 = 65535,刚好覆盖 1024~65535)。

四、验证修改是否生效

执行以下命令查看配置:

bash 复制代码
netsh int ipv4 show dynamicport tcp

若输出为:

复制代码
协议 tcp 动态端口范围
---------------------------------
启动端口 : 1025
端口数 : 64510

则修改成功。

五、缩短 TIME_WAIT 超时(彻底解决端口耗尽)

高并发下,TIME_WAIT 状态的端口会暂时占用资源。需缩短 TIME_WAIT 超时时间(需重启电脑生效):

  1. 打开注册表编辑器:regedit
  2. 定位到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. 新建 DWORD(32位)值 ,命名为 TcpTimedWaitDelay
  4. 设置值为 30(单位:秒,建议 30~60 秒,避免过小影响网络稳定性)

六、JMeter 端优化(减少端口消耗)

在 JMeter 的 HTTP 请求HTTP 请求默认值 中,调整连接池和超时参数:

  1. 打开 HTTP 请求 面板 → 切换到 Advanced 标签。
  2. 设置:
    • Implementation:选 HttpClient4(更高效的长连接管理)。
    • Connection Timeout:设为 10000(连接超时,毫秒)。
    • Response Timeout:设为 30000(响应超时,毫秒)。
    • Use KeepAlive:勾选(复用 TCP 连接,减少端口消耗)。

七、测试验证

重新运行 JMeter 压测,观察是否还报 Address already in use: connect。若仍报错,可尝试:

  • 降低 JMeter 并发线程数(临时缓解)。
  • 检查是否有其他程序占用大量端口(如浏览器、后台服务)。

关键说明

  • Win7 对动态端口的修改无需重启 ,但 TIME_WAIT 超时修改需重启电脑。
  • 若修改后仍报错,可能是系统策略限制(如组策略强制固定动态端口范围),需联系管理员解除限制。

通过以上步骤,可彻底解决JMeter 压测的"端口已占用"问题。

相关推荐
美好的事情能不能发生在我身上21 小时前
Jmeter压测遇到的问题
java·分布式·jmeter
aka卡卡3 天前
JMeter学习教程
jmeter
xiufeia4 天前
JMeter
java·jmeter·tomcat·高并发
文人sec5 天前
【Linux 服务器上搭建 JMeter 性能测试与监控环境(实战版)】
linux·运维·服务器·jmeter·性能测试
测试19985 天前
Jmeter接口测试:使用教程(上)
自动化测试·python·测试工具·jmeter·职场和发展·测试用例·接口测试
半个俗人8 天前
05postman关联-常用的数据提取方式
测试工具·jmeter·postman·js