解决Jmeter压测异常率过高的问题

本文介绍了解决在使用JMeter进行压力测试时遇到的异常率高问题的方法。通过调整Windows注册表设置,增加动态分配端口的上限至65534,并减少TIME_WAIT状态的超时值,有效降低了异常率。

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

今天在使用本地(Windows)Jmeter对远程服务器进行压力测试的时候,发现异常率非常的高,但是项目中日志没有报错误,然后观察TCP链接数排除了服务端的嫌疑,发现随着压测的进行,TCP连接数越来越少。打开日志输出发现报了大量的以下错误:

java.net.BindException: Address already in use: connect

百度后,原因为:
Windows 提供给 TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收他们。就导致我们在短时间内跑大量的请求时将端口占满了。
解决办法如下:

  1. cmd中,用regedit命令打开注册表

第一步:增加动态分配到客户端 TCP/IP套接字连接的临时端口的上限。

  1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下:
    • 右击parameters,添加一个新的DWORD,名字为MaxUserPort
    • 然后双击MaxUserPort,输入数值数据为65534,基数选择十进制

第二步:降低客户端 TCP/IP 套接字连接的超时值(默认值为 240 秒)

  1. 在注册表中,浏览到并单击以下注册表项。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  2. 在“编辑”菜单中单击“新建”、“DWORD 值”,然后添加以下注册表值,以缩短关闭连接时,该连接处于 TIME_WAIT 状态的时间。当连接处于 TIME_WAIT 状态时,套接字对无法重新使用:

    • 右击parameters,添加一个新的DWORD,名字为TcpTimedWaitDelay
    • 然后双击TcpTimedWaitDelay,输入数值数据为一个 30240 之间的数字,基数选择十进制
  3. 重启电脑

完成以上步骤后,异常率大大降低。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值