在某些情况下,能够在不停止测试的情况下更改性能测试产生的负载是有用的或必要的。这可以通过使用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. SpringCloud微服务

    SpringCloud SpringCloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.负载均衡.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行 ...

  2. Tensorflow细节-P312-PROJECTOR

    首先进行数据预处理,需要生成.tsv..jpg文件 import matplotlib.pyplot as plt import numpy as np import os from tensorfl ...

  3. 思科ASA基本配置

    ------------恢复内容开始------------ ASA基本配置 ciscoasa#show running-config        //讲解已作的默认配置 ciscoasa#conf ...

  4. 关于System.BadImageFormatException

    什么是BadImageFormatException BadImageFormatException是当动态链接库 (DLL) 或可执行程序的文件映像无效时引发的异常. 可能的原因 如果动态链接库 ( ...

  5. Prisma 2 is Coming Soon

    转自:https://www.prisma.io/blog/prisma-2-is-coming-soon-mwwfhevie993 Prisma 2 will introduce many fund ...

  6. bootstrap导航条组件

    一.导航条模板(官方文档) <nav class="navbar navbar-default"> <div class="container-flui ...

  7. dropbox icloud and nustore

    dropbox icloud and nustore 这里只是写一下自己的感受. 曾经搜索无数遍, 想着用哪个比较好, 想来比较一下, 还不如自己直接用用看吧. 于是同时用了很久的 dropbx 和 ...

  8. Linux下的nexus数据迁移

    刚到公司没多久,目前公司有两个项目公用一个nexus的maven私服,现在想把两个私服的jar包拆分开: 我在原私服的nexus服务器中, 1.备份原nexus使用命令 完成tar包的压缩 打包完毕后 ...

  9. 第05组Alpha冲刺(1/4)

    队名:天码行空 组长博客连接 作业博客连接 团队燃尽图(共享): GitHub当日代码/文档签入记录展示(共享): 组员情况: 组员1:卢欢(组长) 过去两天完成了哪些任务:SVN管理工具搭建 展示G ...

  10. 随便贴两个漏洞,如 Apache JServ协议服务

    1.Apache JServ协议服务 描述:Apache JServ协议(AJP)是一种二进制协议,可以将来自Web服务器的入站请求代理到 位于Web服务器后面的应用程序服务器.不建议在互联网上公开使 ...