Jmeter-CLI模式
所谓cli模式,即使用无图形模式去执行性能测试
性能测试中为什么要用cli模式
有图形界面,就需要消耗发起方机器过多 内存资源,jmeter默认的内存大小为1g,图形界面占用了资源,可用于模拟虚拟用户和发送情况的资源就会少。导致,模拟的并发用户数少了、请求量也少了,对服务器造成的压力就少。
CLI 没有图形界面,能让更多的jmeter的内存资源用于模拟虚拟用户和发送情况,这个发起就要对服务器的压力大一些,测试出服务器的真实性能就更加接近。
命令行解读
# 命令帮助文档 jmeter.bat -? jmeter.bat --help
常用参数
-n, --nongui run JMeter in nongui mode # 让jmeter运行在cli模式下
-t, --testfile <argument> the jmeter test(.jmx) file to run # .jmx的性能测试脚本文件路径
-l, --logfile <argument>the file to log samples to # 取样器的结果写入的文件,这个文件名称必须不存在,如指定为test01.jtl或者test01.csv
-e, --reportatendofloadtests generate report dashboard after load test # 在性能测试结束之后,生成一个报告
-o, --reportoutputfolder <argument> # 报告面板输出到的文件夹,这个目录可以不存在,但如果存在,必须是一个空的文件夹
-g # 由一个结果文件,输出报告结果(通常是根据这个.jtl文件再生成一份测试报告[不同的取样点,默认是一分钟取一个点])
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
jmeter.bat -g F:\apache-jmeter-5.1.1\bin\cli_test_001.jtl -e -o F:\apache-jmeter-5.1.1\bin\cli_test002 # 根据上次修改的jtl文件,再生成一份测试报告 -g参数
# non-gui命令启动的时候也可以指定堆栈的大小
jmeter -n -Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m -t [jmx file] -l [results file] -e -o [Path to web report folder]
命令注意事项
1、如果没有配置jmeter的环境变量。这个命令 只能在jmeter的bin文件夹下执行
2、jmeter.bat 是windows电脑 jmeter.sh\jmeter linux\mac电脑
3、要开启 cli模式,必须带上 -n 参数
4、 -t 参数 指定的脚本 相对路径 绝对路径
5、 -l 取样器执行的结果写入的文件 ,随便命名一个不存在的.jtl文件即可
这个文件,可以是 .jtl 也可以是 .csv
不要修改 jmeter.properties配置文件,特别是 output_format这个参数不要修改 用默认的jmeter.save.saveservice.output_format=csv。
jmeter.save.这个开头的所有配置,请不要修改。 因为,你在不懂怎么修改时,就修改了,那么 输出的jtl文件里面的数据列,就会发生变化,最后,生成html文件,可能生产不了,也可能取错数据。
-l后的这个jtl输出文件,必须不存在,如果存在,就会报错(它,没有文件末尾追加、覆盖文件)
-
6、-e 性能测试结束之后,生成一份报告
-
7、-o 报告最后输出到的文件夹
-
这个文件夹,必须为空, 可以不存在,如果存在,文件夹里面一定要为空。
-
cmd窗口输出解读
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
summary + 500 in 00:00:24 = 20.4/s Avg: 645 Min: 0 Max: 6521 Err: 0 (0.00%) Active: 14 Started: 14 Finished: 0
summary + 802 in 00:00:30 = 27.0/s Avg: 444 Min: 0 Max: 2622 Err: 0 (0.00%) Active: 14 Started: 14 Finished: 0
summary + 819 in 00:00:30 = 27.3/s Avg: 480 Min: 0 Max: 2556 Err: 0 (0.00%) Active: 14 Started: 14 Finished: 0
summary = 1319 in 00:00:54 = 24.2/s Avg: 542 Min: 0 Max: 6521 Err: 0 (0.00%)
summary = 2121 in 00:01:24 = 25.2/s Avg: 505 Min: 0 Max: 6521 Err: 0 (0.00%)
summary + 886 in 00:00:30 = 29.5/s Avg: 401 Min: 0 Max: 2766 Err: 0 (0.00%) Active: 14 Started: 14 Finished: 0
summary + 739 in 00:00:30 = 24.5/s Avg: 531 Min: 0 Max: 2699 Err: 0 (0.00%) Active: 14 Started: 14 Finished: 0
summary = 3007 in 00:01:54 = 26.3/s Avg: 475 Min: 0 Max: 6521 Err: 0 (0.00%)
summary = 3746 in 00:02:24 = 25.9/s Avg: 486 Min: 0 Max: 6521 Err: 0 (0.00%)
Active: 14 Started: 14 Finished: 0
-
Active:
-
在当前这段时间中,有多少的活跃线程数,
-
-
started
-
在一段时间内(默认30s),有启动过多少的线程数,
-
-
Finished
-
在一段时间内(默认30s),有多少启动的线程被停止,
-
Active与started在数值上可能会不相等。
/*
生成html报告,默认是1分钟取1个点
reportgenerator.properties文件中 jmeter.reportgenerator.overall_granularity=60000 1分钟
修改这个值,要大于1000
经验:
一般,性能测试执行时间 只有几十秒到十几二十分钟,可以设置这个时间为几秒,
如果是做压力测试,运行几个小时,你就不要去改
*/