性能答疑 QQ 群:697244251

动态吞吐量概述

顾名思义,jmeter 在执行压力测试时,可以在不停止脚本的情况下修改吞吐量阀值,测试额定吞吐量下的各项性能指标。我们可以通过Constant Throughput Timer(吞吐量计时器)和 Beanshell 服务器来组合完成。

吞吐量定时器

在 jmeter 中添加 Constant Throughput Timer

1-1
此图表示在当前活动线程组下,吞吐量阀值是 1200/min,可以换算成 20/s

1-2

1-3
图 1-2 和 1-3 表示将这个阀值做成了全局属性并且进行换算。我们通过设置吞吐量阀值来控制运行过程中的吞吐量。由于后面我们将通过命令行动态更新此值,因此必须将其定义为变量。

运行时间控制器

尽量把运行时间加长一些去观察吞吐量的变化。所以加入了运行时间控制器以延长运行时间。如图 1-4

1-4

9000 运行端口开放

使用 JMeter Beanshell 作为服务器,用来执行 Beanshell 命令。通过调用 beanshell 函数来动态更新之前定义的 “hit” 参数。Beanshell 是一个内置于 JMeter 中的 Java 源代码解释器
在 jmeter.properties 上取消注释以下行

重启 jmeter,并在主目录下打开 cmd 查看端口运行状态

Netstat -ano | findstr “9000”

bsh 动态参数编辑

在 JMeter 主目录下创建文件夹 bsh,并添加一个名为 update_parameter.bsh 的.bsh 文件,其中包含以下内容:

setprop("hits",args[0]);

在主目录下打开 cmd 命令,执行 dir bash\

参数调用

文件调用 setprop 函数以通过第一个参数 (args [0]) 中的值更新 “hit”
现在能够在测试运行时调用 bsh 函数来更新 “hit” 了。在 jmeter 根目录下通过以下命令将参数更新为每分钟 “1200” 个请求:
java -jar .\lib\bshclient.jar localhost 9000 .\bsh\update_parameter.bsh 1200

观察运行中的吞吐量,有明显的改变


↙↙↙阅读原文可查看相关链接,并与作者交流