jmeter压测常见报错总结

address already in use:connect

报错原因:

1、windows系统为了保护本机,限制了其他机器到本机的连接数.

2、TCP/IP 可释放已关闭连接并重用其资源前,必须经过的时间。关闭和释放之间的此时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期(2MSL)状态。此时间期间,重新打开到客户机和服务器的连接的成本少于建立新连接。减少此条目的值允许 TCP/IP 更快地释放已关闭的连接,为新连接提供更多资源。如果运行的应用程序需要快速释放和创建新连接,而且由于 TIME_WAIT 中存在很多连接,导致低吞吐量,则调整此参数。

解决方案

修改操作系统注册表

1、打开注册表:regedit

2、找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters

3、新建 DWORD值,name:TcpTimedWaitDe,value:30(十进制) ——> 设置为30秒(默认240)

4、新建 DWORD值,name:MaxUserPort,value:65534(十进制) ——> 设置最大连接数65534

注意:修改时先选择十进制,再填写数字。

5、重启系统

socket closed

问题原因:

在JMeter下,发送http 请求时,一般都是默认选择了use keepAlive,这个是连接协议,JMeter坑就在这里,默认勾选了这个(如果不勾选的话,也不会保存),但其配置JMeter.properties中的时间设置默认却是注销的,也是是说,不会等待,一旦连接空闲,则立马断开了,导致我们压测中出现了事务失败的情形。

解决方案:

http请求修改

不要勾选(勾选后默认为不释放连接)

java.lang.OutOfMemoryError: Java heap space

问题原因

JMeter是一个纯Java开发的工具,内存由java虚拟机JVM管理,当内存回收不及时,堆内存不足时,就会报内存溢错误。

概念补充:

内存泄露:应用使用资源之后没有及时释放,导致应用内存中持有了不需要的资源。

内存溢出:应用的内存已经不能满足正常使用了,堆栈已经达到系统设置的最大值,进而导致崩溃。

通常都是由于内存泄露导致堆栈内存不断增大,从而引发内存溢出。

对JMeter而言也是如此,JMeter测试过程中,如果内存溢出的话,一般会出现上图中的提示:java.lang.OutOfMemoryError: Java heap space:意思就是堆内存溢出,不够用了

解决方案:

增加堆内存大小:可以通过调整 JVM 启动参数来增加堆内存的大小。

使用 -Xms 设置起始堆大小,使用 -Xmx 设置最大堆大小

修改jmeter配置文件,调整内存可用的范围

修改/bin/jmeter.bat文件:找到这2行

set HEAP=-Xms256m -Xmx256m -XX:MaxMetaspaceSize=256m

改为:(根据自己的情况修改 最大值尽量不超过系统内存的1/2)

set HEAP=-Xms8g -Xmx8g -XX:MaxMetaspaceSize=256m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值