在某些情况下,能够在不停止测试的情况下更改性能测试产生的负载是有用的或必要的。这可以通过使用Apache JMeter™恒定吞吐量计时器和Beanshell服务器来完成。在这篇文章中,我们将介绍如何实现这一点,同时提供示例。

在性能测试场景中,负载主要由访问正在测试的应用程序的虚拟用户数量来定义。在JMeter中,虚拟用户实现为线程。其他可以定义测试负载的参数或变量是测试持续时间,思考时间和上升周期。在这篇文章中,我们将要改变的load参数是吞吐量,通过Constant Throughput Timer。

通过使用Constant Throughput Timer元素,JMeter允许通过在请求之间引入暂停来定义每分钟发送的请求数,同时线程数保持不变。有关更多信息,请参阅恒定吞吐量定时器组件参考

1.此配置的第一步是将提到的元素添加到JMeter。恒定吞吐量计时器将通过设置“目标吞吐量”值来控制在测试中每分钟执行的请求数。由于我们将通过命令行更新此值,因此必须将其定义为参数(示例中为“hits”)。通过编写$ {__ P(hits,100)},默认值将设置为100。

此配置显示在以下屏幕截图中:

将此元素置于线程组级别是有意义的,因此将控制其中的所有线程,从而在该组上生成所需的目标负载。此外,吞吐量将基于每个线程进行调整,因为值“基于计算吞吐量”反映。

重要的是要注意调整负载以匹配每分钟请求值,因此请给测试一些时间来注意吞吐量的变化。

2.下一步是使用JMeter Beanshell作为服务器,以便您可以发出Beanshell命令。出于此示例的目的,我们将通过调用beanshell函数来更新先前定义的“hits”参数。Beanshell是一个内置于JMeter的Java源代码解释器,允许您执行Java代码并使用脚本功能扩展它。可以在BeanShell的主页上找到更多信息

执行此操作的必要步骤将在以下行中描述:

3.在JMeter启动时启用Beanshell服务器:

  • 首先配置服务器将侦听的TCP端口。我们在这个例子中使用了9000。
  • 其次,指定将启动它的.bsh服务器文件。此文件已随JMeter一起提供,无需编辑。

为此,应在jmeter.properties上取消注释以下行:

beanshell.server.port=
beanshell.server.file=../extras/startup.bsh

4. JMeter启动后,我们可以通过检查其TCP端口状态来验证Beanshell服务器是否已启动并运行。在Windows上,这可以通过以下命令在DOS命令窗口上完成:

netstat -an | find “”

5.创建.bsh文件以修改/更新“hits”参数。我们在JMeter主目录下创建了文件夹bsh \以保持目录的顺序,并添加了一个名为update_parameter.bsh的.bsh文件,其中包含以下内容:

setprop (“hits” , args [ 0 ]);

基本上,此文件调用setprop函数以使用提供的第一个参数(args [0])中的值更新“hits”。

6.我们现在能够在测试运行时调用创建的.bsh来更新“命中”。通过以下命令(当前路径是JMeter主目录),我们将参数更新为每分钟“10”个请求:

java -jar .\lib\bshclient.jar localhost 9000 .\bsh\update_parameter.bsh 10

该命令首先通过bshclient.jar调用beanshell客户端,该客户端将连接到9000 TCP端口上的localhost,这是我们的beanshell服务器正在侦听的地址。接下来,该命令调用update_parameter.bsh,其中“10”作为其第一个参数。这将调用setprop函数设置“hits”为10,从而减慢我们的测试负载。

接下来,显示示例调用DOS窗口:

7.在测试运行时,可以随时调用此命令,因此可以更新每分钟的JMeter请求。当通过命令行或GUI运行JMeter时,可以执行此操作。

将这些全部放在一起,我们将展示JMeter GUI上的负载变化情况。我们创建了一个简单的Test,它对openCart Test页面执行请求。在其线程组内,我们还放置了恒定吞吐量计时器,以控制生成的吞吐量。

默认情况下,“hits”参数设置为每分钟100个请求,测试将由5个线程运行。

测试计划结构如下所示:

此外,添加了一个Graph Results元素(右键单击Test plan - > Add - > Listener - > Graph Results)以图形方式显示测试结果。

让测试运行几分钟后,为了在图表上生成足够的样本,我们将“命中”更新为1:

生成的图中的绿色虚线表示在每分钟请求保持稳定的一段时间后吞吐量减少。

如何在运行时更改JMeter的负载的更多相关文章

  1. RTTI (Run-Time Type Identification,通过运行时类型识别) 转

    参考一: RTTI(Run-Time Type Identification,通过运行时类型识别)程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型.   RTTI提供了以下两个 ...

  2. 在运行时生成C# .NET类

    ​本文译自​:​Generating C# .NET Classes at Runtime 作者:WedPort 在我的C#职业生涯中,有几次我不得不在运行时生成新的类型.希望把它写下来能帮助有相同应 ...

  3. JMETER远程运行_多机联合负载

    JMETER远程运行_多机联合负载 远程运行是用一台JMeter控制机控制远程的多台机器来产生负载.控制机与负载机之间通过RMI方式来完成通信.在负载机上运行Agent程序(启动命令是%JMETER_ ...

  4. 『动善时』JMeter基础 — 55、JMeter非GUI模式运行

    目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.怎样使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模 ...

  5. 『动善时』JMeter基础 — 55、使用非GUI模式运行JMeter(命令行模式)

    目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模式运 ...

  6. JMeter非GUI方式运行时动态设置线程组及传参

    http://blog.csdn.net/selingchen/article/details/48106517 在使用JMeter进行性能测试自动化时,可能会有如下需求: 1.指定运行多少线程,指定 ...

  7. JMeter命令行方式运行时动态设置线程数及其他属性(动态传参)

    在使用JMeter进行性能测试时,以下情况经常出现: 1.测试过程中,指定运行的线程数.指定运行循环次数不断改变: 2.访问的目标地址发生改变,端口发生改变,需要改写脚本. 上面的问题在GUI中,直接 ...

  8. 【转】使用ant来调用Jmeter,并定制运行时参数

    为了应对不同的运行需求(主要是不同的线程数),以及可能的变化(host ip),在nongui运行时我对ant build.xml进行了一些修改 1. log目录备份与运行前清除 <tstamp ...

  9. 使用JMeter进行负载测试——终极指南

    这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 JMeter的实现方式以及采用的技术 安 ...

随机推荐

  1. shell脚本 mysql主从

    #!/bin/bash systemctl stop firewalld setenforce user="tom" password=" slave_ipaddr=&q ...

  2. spring boot+Quartz+数据库存储

    SpingBoot+Quartz+数据库存储 1.Spring整合Quartz 2.读取数据库中表达式启动定时任务1(每5s执行) 3.更改定时任务状态(启用/禁用),定时任务1停止 4.读取数据库中 ...

  3. Can't generate API documentation in l5-swagger

    Can't generate API documentation in l5-swagger Ask Question Asked 3 months ago Active 1 month ago Vi ...

  4. 和jz姐姐的vp记录

    即使如此,jz姐姐也漂亮的取得了胜利 有些懒得写直接口胡,所以代码也不一定有 暂时停更了 2015-2016 Petrozavodsk Winter Training Camp, Makoto rng ...

  5. 图解CRM(客户关系管理)全流程

    https://blog.csdn.net/lylmwt/article/details/84921432

  6. 查看服务器内存、CPU、网络等占用情况的命令--汇总

    搭建测试环境过程中,需要对正在使用的aws服务器(实际这是一台虚拟出来的服务器),查看它在运行脚本,启动脚本时的内存,CPU,网络等使用情况 1.查看服务器cpu内核个数: -cat 每个物理cpu中 ...

  7. LAMP架构介绍

    介绍一下LAMP架构 LMAP即Linux+Apache+Mysql/MariaDB+Perl/PHP/Python的首字母缩写.这是一组常用来搭建动态网站或者服务器的开源软件.它们本身都是各自独立的 ...

  8. 移动端点击事件兼容问题,在pc端可以点,在手机上不可以点

    ms-click="showCodeExplain()" onClick="javascript:;" 在点击事件后面加上onClick="javas ...

  9. Atcoder Regular Contest 060 F题第一问答案证明

    一切的开始 令 \(x\) 为字符串,\(p\) 为正整数.如果对于满足 \(0\le i<|x|−p\) 的任何整数 \(i\) 满足 \(x[i]=x[i+p]\),则 \(p\) 称为 \ ...

  10. hdu1002 A + B Problem II[大数加法]

    目录 题目地址 题干 代码和解释 参考 题目地址 hdu1002 题干 代码和解释 由题意这是一个涉及到大数的加法问题.去看了一眼大数加法的方法感觉头很大,然后突然发现Java可以流氓解决大数问题,毅 ...