常用参数
-n, --nongui
命令行界面启动jmeter
-t, --testfile {filename}
jmx结尾的测试计划,支持相对路径
-l, --logfile {filename}
日志结果文件
-r, --runremote (non-GUI only)
#non-gui模式下启动remote_hosts配置的所有远程server
-R, --remotestart server1,… (non-GUI only)
#non-gui模式下启动指定的server,此时remote_hosts和-r都无效
-p, --propfile {argument}
属性文件
-q, --addprop {argument}
附加的属性文件
-s, --server
运行JMeter服务器
-J, --jmeterproperty {argument}={value}
JMeter 本地属性
-p, --propfile {argument}
Jmeter本地属性文件,默认-p jmeter.properties
-D, --systemproperty {argument}={value}
JAVA系统属性
-S, --systemPropertyFile {filename}
JAVA系统属性文件
-G, --globalproperty (argument)[=(value)]
发送给server的全局属性,可以把属性及值填入global.properties,之后使用-Gglobal.properties
示例
界面上填写KaTeX parse error: Expected group after '_' at position 2: {_̲_P(num_threads)…{__P(ip)},表示使用jmeter的num_threads属性和ip属性替换
然后执行命令,从命令行传入jmeter的属性值
export HEAP='-Xmx8192m'
./jmeter -n -t test.jmx -l test.jtl -J ip=192.168.199.177 -J num_threads=3000 -J ramp_time=60 -J duration=1200
分布式测试示例
jmeter配置测试计划并保存到桌面
产生的C:/Users/Administrator/Desktop/baidu.jmx内容
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.0 r1840935">
<hashTree>
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
<stringProp name="TestPlan.comments"></stringProp>
<boolProp name="TestPlan.functional_mode">false</boolProp>
<boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
<boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
<elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
<collectionProp name="Arguments.arguments"/>
</elementProp>
<stringProp name="TestPlan.user_define_classpath"></stringProp>
</TestPlan>
<hashTree>
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
<boolProp name="LoopController.continue_forever">false</boolProp>
<intProp name="LoopController.loops">-1</intProp>
</elementProp>
<stringProp name="ThreadGroup.num_threads">${__P(num_threads)}</stringProp>
<stringProp name="ThreadGroup.ramp_time">${__P(ramp_time)}</stringProp>
<boolProp name="ThreadGroup.scheduler">true</boolProp>
<stringProp name="ThreadGroup.duration">${__P(duration)}</stringProp>
<stringProp name="ThreadGroup.delay"></stringProp>
</ThreadGroup>
<hashTree>
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
<collectionProp name="Arguments.arguments"/>
</elementProp>
<stringProp name="HTTPSampler.domain">www.baidu.com</stringProp>
<stringProp name="HTTPSampler.port"></stringProp>
<stringProp name="HTTPSampler.protocol"></stringProp>
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
<stringProp name="HTTPSampler.path">/</stringProp>
<stringProp name="HTTPSampler.method">GET</stringProp>
<boolProp name="HTTPSampler.follow_redirects">true</boolProp>
<boolProp name="HTTPSampler.auto_redirects">false</boolProp>
<boolProp name="HTTPSampler.use_keepalive">true</boolProp>
<boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
<stringProp name="HTTPSampler.response_timeout"></stringProp>
</HTTPSamplerProxy>
<hashTree/>
</hashTree>
</hashTree>
</hashTree>
</jmeterTestPlan>
切换到jmeter_home/bin目录执行如下命令
jmeter-server -D server.rmi.ssl.disable=true -LDEBUG -Djava.rmi.server.hostname=192.168.1.18 -Dserver.rmi.localport=1099 -Dserver_port=1099
jmeter-server -D server.rmi.ssl.disable=true -LDEBUG -Djava.rmi.server.hostname=192.168.1.18 -Dserver.rmi.localport=1098 -Dserver_port=1098
jmeter-server -D server.rmi.ssl.disable=true -LDEBUG -Djava.rmi.server.hostname=192.168.1.18 -Dserver.rmi.localport=1097 -Dserver_port=1097
jmeter -D server.rmi.ssl.disable=true -LDEBUG -n -t C:/Users/Administrator/Desktop/baidu.jmx -l C:/Users/Administrator/Desktop/baidu.jtl -R 192.168.1.18:1097,192.168.1.18:1098,192.168.1.18:1099 -G num_threads=30 -G ramp_time=2 -G duration=30
jmeter -D server.rmi.ssl.disable=true -LDEBUG -n -t C:/Users/Administrator/Desktop/baidu.jmx -l C:/Users/Administrator/Desktop/baidu.jtl -J remote_hosts=192.168.1.18:1097,192.168.1.18:1098,192.168.1.18:1099 -r -G num_threads=30 -G ramp_time=2 -G duration=30