jmeter命令行常用参数和使用示例

常用参数

-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配置测试计划并保存到桌面

线程组
HTTP请求

产生的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

JMeter是一款使用Java语言开发的性能测试工具,可以用于模拟多种负载条件下的应用程序性能测试。在JMeter中,可以使用命令行来执行性能测试,并且可以通过动态设置参数来进行灵活的测试。 在JMeter命令行模式下,可以通过使用-J参数来设置动态参数。具体的操作步骤如下: 1. 打开命令行窗口,并导航到JMeter的bin目录下。 2. 输入以下命令,并使用-J参数来设置需要动态修改的参数: ``` jmeter -n -t <测试计划文件路径> -J<参数名>=<参数值> ``` 其中,`<测试计划文件路径>`是指定需要执行的测试计划文件的路径,`<参数名>`和`<参数值>`是需要动态修改的参数及其对应的值。 例如,我们要设置线程数为100,可以使用以下命令: ``` jmeter -n -t mytestplan.jmx -Jthreads=100 ``` 3. 执行命令,并等待测试结果生成。 通过命令行动态设置参数,可以在不改动测试计划文件的情况下,灵活地进行性能测试。这在需要进行多轮测试以及对不同参数组合进行测试时非常有用。 需要注意的是,通过命令行设置的参数的优先级高于测试计划文件中的参数设置。也就是说,如果在命令行和测试计划文件中都设置了同名参数的值,那么以命令行设置的值为准。 总之,JMeter命令行模式可以通过动态设置参数来进行灵活的性能测试,为测试人员提供了方便和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值