参考文档: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