Jmeter-CLI模式

发布时间 2023-04-10 00:22:04作者: 无敌大牛牛

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    
​
经验:
一般,性能测试执行时间 只有几十秒到十几二十分钟,可以设置这个时间为几秒,
如果是做压力测试,运行几个小时,你就不要去改
*/