JMeter 十二:命令行执行
参考文档:http://jmeter.apache.org/usermanual/get-started.html#non_gui
真正开始跑压力测试时,我们就不能使用GUI模式了。这时候需要采用命令行模式。
执行测试命令
参数说明:
-n, --nongui run JMeter in nongui mode //以命令行模式执行JMeter -t, --testfile <argument> the jmeter test(.jmx) file to run. "-t LAST" will load last used file //指定要执行的JMX脚本 -l, --logfile <argument> the file to log samples to //指定取样结果的保存文件 -j, --jmeterlogfile <argument> jmeter run log file (jmeter.log) //指定jmeter.log的路径
示例:
1. 命令行方式跑 my_test.jmx
jmeter -n -t my_test.jmx
2. 保存取样结果
这里取样结果可以保存为csv格式,也可以保存为jtl格式。
jmeter -n -t my_test.jmx -l a.csv
保存好的a.csv或者a.jtl文件可以在后期使用JMeter直接打开。
新建一个Test Plan,任意建立一个监听器,比如查看结果树。点击浏览,打开我们保存的文件,这里就是a.csv,就可以看到详细取样结果信息。
3. 保存JMeter的log文件
JMeter的log信息默认情况下都保存到 jmeter.log文件里面。但是这个文件每次跑测试之前都会清空,所以如果我们想要保存每次测试的log信息,我们就需要用到 –j 这条命令。
jmeter -n -t my_test.jmx -j a.log
以JMeter的GUI模式执行时,可以通过点击下面的黄色感叹号来打开 Log View 面板,也可以通过 选项 –> Log Viewer来打开。Log Viewer面板显示的log和上面命令行执行产生的a.log的内容是一致的。
log内容类似如下:
2017-03-01 12:19:20,314 INFO o.a.j.JMeter: Version 3.2.20170301 2017-03-01 12:19:45,314 INFO o.a.j.g.a.Load: Loading file: c:\mytestfiles\BSH.jmx 2017-03-01 12:19:52,328 INFO o.a.j.e.StandardJMeterEngine: Running the test! 2017-03-01 12:19:52,384 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group BSH. Ramp up = 1. 2017-03-01 12:19:52,485 INFO o.a.j.e.StandardJMeterEngine: Continue on error 2017-03-01 12:19:52,589 INFO o.a.j.t.JMeterThread: Thread BSH1-1 started 2017-03-01 12:19:52,590 INFO o.a.j.t.JMeterThread: Thread BSH1-1 is done 2017-03-01 12:19:52,691 INFO o.a.j.e.StandardJMeterEngine: Test has ended
远程执行
参数说明:
-r, --runremote Start remote servers (as defined in remote_hosts) //在 remote_hosts定义的机器上跑测试 -R, --remotestart <argument> Start these remote servers (overrides remote_hosts) //在后边定义的机器上跑测试 -X, --remoteexit Exit the remote servers at end of test (non-GUI) //测试结束退出远程机器
示例:
1. 在远程机器上跑测试
jmeter -n -t testplan.jmx –r
前提是设置好远程连接:JMeter 七:远程测试
设置好远程服务器之后,这里就会启动 jmeter.properties文件里面 remote_hosts配置的远程机器。
2. 在特定的远程机器上跑测试
jmeter -n -t script.jmx -R server1,server2,…
这里先定义远程机器,然后在远程机器上启动测试。
代理
如果需要在防火墙或者代理服务器后测试,我们需要向JMeter提供 防火墙或者代理服务器的机器名以及端口号。
-H, --proxyHost <argument> Set a proxy server for JMeter to use //设置JMeter使用的代理服务器 -P, --proxyPort <argument> Set proxy server port for JMeter to use //设置JMeter使用的代理服务器端口号 -N, --nonProxyHosts <argument> Set nonproxy host list (e.g. *.apache.org|localhost) //设置非代理服务器列表 -u, --username <argument> Set username for proxy server that JMeter is to use //设置JMeter使用的代理服务器用户名 -a, --password <argument> Set password for proxy server that JMeter is to use //设置JMeter使用的代理服务器密码
示例:
jmeter -H xxx.xxx.xxx -P 8000 -u username -a password -N localhost
帮助命令
参数说明:
--? print command line options and exit //打印命令行选项 -h, --help print usage information and exit //打印帮助信息 -v, --version print the version information and exit //打印版本信息
其他命令
还有一些不常用的其他命令,主要都是对一些属性的设置。拷贝下来留作备用。
-p, --propfile <argument> the jmeter property file to use -q, --addprop <argument> additional JMeter property file(s) -i, --jmeterlogconf <argument> jmeter logging configuration file (log4j2.xml) -s, --server run the JMeter server -J, --jmeterproperty <argument>=<value> Define additional JMeter properties -G, --globalproperty <argument>=<value> Define Global properties (sent to servers) e.g. -Gport=123 or -Gglobal.properties -D, --systemproperty <argument>=<value> Define additional system properties -S, --systemPropertyFile <argument> additional system property file(s) -f, --forceDeleteResultFile force delete existing results files before start the test -L, --loglevel <argument>=<value> [category=]level e.g. jorphan=INFO, jmeter.util=DEBUG or com .example.foo=WARN -d, --homedir <argument> the jmeter home directory to use