如何从 jmeter 非 gui 命令分别测试 50 个线程和 60 个线程,分别用于 slave 1 和 slave 2?

How can I test 50 threads and 60 threads ,for slave 1 and slave 2 respectively from jmeter non gui command?

场景: 我配置了 2 台从机,我想为从机 1 发送 50 个用户,为从机 2 发送 60 个用户。我正在使用来自命令的非 GUI jmeter。

IP Address example :

Slave 1 : 1.0.0.1

Slave 2 : 2.0.0.2

Jmeter测试计划配置变量:

线程数:${__P(threads1,)}

加速期:${__P(threads2,)}

循环次数:${__P(threads3,)}

我尝试在 jmeter 启动时执行以下命令,但它没有按预期工作:

jmeter -n -t POC1.jmx -R 1.0.0.1,2.0.0.2 -Gthreads1=50 -Gthreads2=1 -Gthreads3=1, -Gthreads1=60 -Gthreads2=1 -Gthreads3=1

如果上面的命令有误,请帮助我,请告诉我如何发送 50 个用户线程,从站 1 的启动周期 1 和循环计数 1,以及 60 个用户线程启动周期 1 和循环计数 1对于奴隶 2.

您将无法按照上述方式进行操作,因为:

  1. 所有远程从站都在执行相同的测试计划
  2. 您可以通过 -G 命令行参数传递 global 属性,因此所有远程客户端都将设置相同的属性

解决办法是在不同的slave上使用不同的user.properties,比如:

  1. 在您的 Test Plan using __P() function 中定义虚拟用户数量,例如:

    ${__P(threads,)}
    
  2. 在第一个 slave 上将下一行添加到 user.properties 文件(位于 JMeter 的 "bin" 文件夹中)

    threads=50
    
  3. 在第二个从服务器上将下一行添加到 user.properties 文件

    threads=60
    
  4. 在从机上重启 JMeter

您还可以在启动 JMeter 服务器时通过 -J 命令行参数传递 threads 属性 值,例如:

  • 在第一个奴隶上

    jmeter -Jthreads=50 -s -j jmeter-slave1.log .....
    
  • 在第二个奴隶上

    jmeter -Jthreads=60 -s -j jmeter-slave2.log .....
    

有关使用 JMeter 属性、设置和覆盖它们的更多信息,请参阅 Apache JMeter Properties Customization Guide