设置动态端口范围(解决 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 超时时间(需重启电脑生效):
- 打开注册表编辑器:
regedit - 定位到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters - 新建 DWORD(32位)值 ,命名为
TcpTimedWaitDelay - 设置值为
30(单位:秒,建议 30~60 秒,避免过小影响网络稳定性)
六、JMeter 端优化(减少端口消耗)
在 JMeter 的 HTTP 请求 或 HTTP 请求默认值 中,调整连接池和超时参数:
- 打开
HTTP 请求面板 → 切换到Advanced标签。 - 设置:
Implementation:选HttpClient4(更高效的长连接管理)。Connection Timeout:设为10000(连接超时,毫秒)。Response Timeout:设为30000(响应超时,毫秒)。Use KeepAlive:勾选(复用 TCP 连接,减少端口消耗)。
七、测试验证
重新运行 JMeter 压测,观察是否还报 Address already in use: connect。若仍报错,可尝试:
- 降低 JMeter 并发线程数(临时缓解)。
- 检查是否有其他程序占用大量端口(如浏览器、后台服务)。
关键说明
- Win7 对动态端口的修改无需重启 ,但
TIME_WAIT超时修改需重启电脑。 - 若修改后仍报错,可能是系统策略限制(如组策略强制固定动态端口范围),需联系管理员解除限制。
通过以上步骤,可彻底解决JMeter 压测的"端口已占用"问题。