动态吞吐量概述
顾名思义,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
观察运行中的吞吐量,有明显的改变