为什么Jmeter 运行时时到达持续时间不停止?
为什么Jmeter 运行时时到达持续时间不停止?
在做并发测试时,遇到了设置持续时间,但是到达了持续时间后,一直不停止;线程组设置的信息如下:
从图中线程组设置可以看出Jmeter需要开启100个线程并且在300s内持续性的给后端服务器发请求,运行后从右上角看到,已经运行超过了300s,但是线程一直没有停止。
从jemeter.log 日志查看不停的打印Stopping because end time detected by thread
从网上查资料得知是因为某些线程被阻塞了,出现线程阻塞的原因是JMeter的所申请的内存不足导致的,解决该问题有几种方法:
- 调整脚本,可以通过调整并发数、减少断言,尽量不要使用监听器来减少额外的内存开销
- 非GPU模式下运行Jmeter脚本
- 通过调整jmeter.bat 中内存参数
默认配置是:set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=512m
根据实际情况进行修改heap 参数,我的是改成了
set HEAP=-Xms512m -Xmx1024m
注意:“Xms”(代表初始化堆栈内存的大小),“Xmx(代表最大内存池可以分配的大小)”
修改后,重启Jmeter。
可通过jconsole.exe验证jmeter内存设置是否成功