运行测试时如何使用BeanShell服务器修改Jmeter的用户属性

How to use BeanShell server to modify Jmeter's user properties while running the test

我想在 运行 测试时实时控制吞吐量。 我如何使用 BeanShell 服务器做到这一点?

基本上我想在测试 运行.

时从命令行更新用户 属性 'throughput'(用于恒定吞吐量计时器)

解法: 根据德米特里的回答,我做了以下事情:
1. 我添加到 user.properties:

beanshell.server.port=9000  
beanshell.server.file=beanshell.server.file=/home/sam/JMeter/apache-jmeter-4.0/extras/startup.bsh
  1. 启动了 JMeter 和我的测试。
  2. 在终端中执行了这个命令:
    ~/JMeter/apache-jmeter-4.0$ java -jar lib/bshclient.jar localhost 9000 /home/sam/JMeter/beanshell/setthroughput.bsh 100
  3. throughput 属性 的值现在是 100。太棒了!
  1. 将接下来的两行添加到 user.properties 文件:

    beanshell.server.port=9000
    beanshell.server.file=../extras/startup.bsh
    
  2. 重新启动 JMeter 以选择设置
  3. 使用 __P() 函数在恒定吞吐量计时器中设置 throughput 属性,例如:

    ${__P(throughput,60)}
    

    这会将默认吞吐量设置为每分钟 60 个请求(每秒 1 个请求),如果 throughput 属性 将以某种方式定义 - 该值将被覆盖。

  4. 在 JMeter 安装的 "lib" 文件夹中创建 setthroughput.bsh,内容如下:

    setprop("throughput", args[0]);
    
  5. 在运行时,您将能够像这样修改吞吐量:

    java -jar bshclient.jar localhost 9000 setthroughput.bsh 100
    

更多信息:Beanshell Server


我相信如果你切换到 Throughput Shaping Timer which has load_profile property so you will be able to control throughput in more flexible and efficient manner. You can install Throughput Shaping Timer using JMeter Plugins Manager 会更容易