Jmeter的命令行方式运行
在每次启动Jmeter的时候,可以看到这个提示。
性能测试,不仅对服务端的性能有要求,对负载机同样有要求。在线程压力不大的情况下,使用GUI的模式不会有问题,方便直接查看测试的执行情况。但是,如果线程压力很大,GUI会经常因为“OutOfMemoryError”等问题卡死。所以,一般我们用GUI模式来创建和调试压力测试数据,调试结束后,使用CL命令行模式来执行测试。此外,CL模式产生的结果报告看着会更舒服些。
先了解一下jmeter的执行命令。举例如下:
jmeter -n -t D:\test.jmx -r -l D:\test.jtl -e -o D:\resultReport
参数说明:
-n : 非GUI 模式执行jmeter;
-t : 执行的jmeter文件,jmx格式;
-r : 远程将所有agent启动,用在分布式测试场景下;
-l : 指定生成测试结果的保存文件, jtl 格式;
-e : 测试结束后,生成测试报告;
-o : 指定测试报告的存放位置;
注意:
(1)-o 指定的文件及文件夹,必须不存在 ,否则执行会失败;因此,-o后面的文件夹或文件一定为空;
(2)l 和o的目录不是同一个目录,要分开放置不同内容;
下面是执行过程,在console界面会打印出一些信息。
打开结果报告的文件夹resultReport,可以看到生成了如下文件:
打开index.html,可以查看结果报表。报告的内容比较详细,而且风格也是比较简洁,推荐使用。下图是报告左侧的导航栏,是根据jmx文件配置产生的结果记录:
如果不喜欢这种report方式,习惯了jmeter GUI的结果展示,那么可以在jmeter GUI中打开jtl文件,这样就可以在jmeter GUI中查看结果了。具体操作如下:
如果命令行模式依旧会报出”OutOfMemoryError”的问题,有2个方案可以尝试解决。
(1)修改Jmeter启动文件,更改设置。
JMeter是一个纯Java开发的工具,内存是由java虚拟机JVM管理;如果出现了内存溢出的问题,可以通过调整JVM内存相关的参数进行优化。打开jmeter.bat文件,对一下这些配置项进行编辑:
调整堆内存的大小:
将默认的HEAP,调整为set HEAP=-Xms1024m -Xmx1024m;
调整堆内存中新生带的大小:
将默认的NEW,调整为set NEW=-XX:NewSize=512m -XX:MaxNewSize=512m;
调整堆内存中永久带的大小:
将默认的PERM,调整为set PERM=-XX:PermSize=256m -XX:MaxPermSize=1024m;
根据经验,heap最多设置为物理内存的一半,默认设置为512M.如果heap超过物理内存的一半,可能运行jmeter会慢,甚至出现内存溢出,原因java比较吃内存,占CPU.
(2)jmx文件中删除一些不必要的结果记录。
例如:察看结果树
这个listener只是调试时用,很占资源,在执行前删掉。
例如:聚合报告中点击Configure,只记录自己需要的,其他的都勾选掉不要。