解决win7下本机端口耗尽问题的方法-jmeter压力测试出现的问题

本文讲述了在进行JMeter压力测试时遇到的HTTP访问失败问题,分析了Java.net.BindException:Address already in use的原因,涉及TIME_WAIT状态和端口占用。作者分享了调整TCP端口范围和缩短TIME_WAIT时间的解决尝试,以及问题的持续性。尽管有所改善,但问题并未完全解决,引发后续深入排查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用jmeter进行压力测试时发现一个很奇怪的问题,在发压开始30秒左右会突然出现http访问失败,访问失败过三四分钟会恢复,持续发压是现象不断的重复。导致tps出现很规律的锯齿状曲线,跟长城的垛口一样。
在出现访问异常是可以看到Java.net.BindException: Address already in use: connect的报错
在网上查询看到说是本地端口大量的’TIME_WAIT’无法释放导致jmeter无端口无法建立新的连接。
通过使用Windows下的netstat命令查看当前连接情况
netstat -ano可以看到当前的全部连接数,可以看到报错的时候所有本地端口都被占用了。
使用netsh int ipv4 show dynamicportrange tcp命令可以看到当前的tcp端口使用范围
上网查了一下TIME_WAIT的默认保持时间是2msl 4分钟,可以通过修改注册表来缩短时间,并且可以通过修改注册表来扩大可用端口数量。
调整端口使用范围方法可以参考微软官网的说明

https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/default-dynamic-port-range-tcpip-chang
使用命令方式调整tcp端口范围

调整tcp TIME_WAIT时间可以通过修改注册表实现
可以参考调整官网关于调整TIME_WAIT说明

调整这个值按照官网说明是有最小限制的,不能小于30,我最开始写了个特别小的结果就没生效还以为是配错了
这两个参数调整完了之后jmeter压力测试好了很多,但是仍然会有一个时间点几乎将所有端口占用完,虽然很快释放了,但是现象台奇怪了。
测试了其他电脑都没出现过这个情况。
后续只能继续再查了。本文待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值