如何在运行时更改JMeter的负载
在某些情况下,能够在不停止测试的情况下更改性能测试产生的负载是有用的或必要的。这可以通过使用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的负载的更多相关文章
- RTTI (Run-Time Type Identification,通过运行时类型识别) 转
参考一: RTTI(Run-Time Type Identification,通过运行时类型识别)程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型. RTTI提供了以下两个 ...
- 在运行时生成C# .NET类
本文译自:Generating C# .NET Classes at Runtime 作者:WedPort 在我的C#职业生涯中,有几次我不得不在运行时生成新的类型.希望把它写下来能帮助有相同应 ...
- JMETER远程运行_多机联合负载
JMETER远程运行_多机联合负载 远程运行是用一台JMeter控制机控制远程的多台机器来产生负载.控制机与负载机之间通过RMI方式来完成通信.在负载机上运行Agent程序(启动命令是%JMETER_ ...
- 『动善时』JMeter基础 — 55、JMeter非GUI模式运行
目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.怎样使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模 ...
- 『动善时』JMeter基础 — 55、使用非GUI模式运行JMeter(命令行模式)
目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模式运 ...
- JMeter非GUI方式运行时动态设置线程组及传参
http://blog.csdn.net/selingchen/article/details/48106517 在使用JMeter进行性能测试自动化时,可能会有如下需求: 1.指定运行多少线程,指定 ...
- JMeter命令行方式运行时动态设置线程数及其他属性(动态传参)
在使用JMeter进行性能测试时,以下情况经常出现: 1.测试过程中,指定运行的线程数.指定运行循环次数不断改变: 2.访问的目标地址发生改变,端口发生改变,需要改写脚本. 上面的问题在GUI中,直接 ...
- 【转】使用ant来调用Jmeter,并定制运行时参数
为了应对不同的运行需求(主要是不同的线程数),以及可能的变化(host ip),在nongui运行时我对ant build.xml进行了一些修改 1. log目录备份与运行前清除 <tstamp ...
- 使用JMeter进行负载测试——终极指南
这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 JMeter的实现方式以及采用的技术 安 ...
随机推荐
- 基于Centos7+Flask+Nginx+uWSGI+Python3的服务器网页搭建教程
之前完成了贴吧签到系统的搭建,笔者想将这个功能分享给更多人使用,所以尝试搭建了一个网页,一路遇到了很多问题,最终解决了,记录下过程分享给大家 首先安装 uWSGI ,和 Nginx 配套使用,具体用途 ...
- 14.go内置的rate包学习2(有花操作,必看)
package main import ( "fmt" "golang.org/x/time/rate" "time" ) func mai ...
- Xamarin.IOS/Mac开发中遇到的问题
虚拟机中安装的mac系统无法识别iphone 今天在 Xamarin.iOS 应用的免费预配 时,进行到 5.插入要在其中部署应用的 iOS 设备. 在第8选择iphone设备时,发现iphone并没 ...
- DACL原理.控制文件的访问权限(文件,注册表.目录.等任何带有安全属性的对象.)
目录 一丶简介 1.DACL是什么. 2.如何创建一个自己控制的文件. 3.SDDL是个什么鬼. 二丶 编写SDDL 控制的文件 一丶简介 1.DACL是什么. DACL称为自主访问的控制列表.是应用 ...
- vsftp 匿名访问设置设置
本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/vsftpd_configuration vsftpd (very ...
- 在GitHub上使用Hexo 搭建自己的博客
1.下载Node.js安装文件(现在电脑基本都是64位的,我就放64位的下载地址):https://nodejs.org/dist/v8.9.4/node-v8.9.4-x64.msi 或者自行到官网 ...
- HttpClient 发送请求和参数
发送请求 没有参数 private static void getData() { String timeStamp = String.valueOf(System.currentTimeMillis ...
- ICEM-三角形特征几何
原视频下载地址:https://pan.baidu.com/s/1qY8SKri 密码: wf17
- 啃OBS源码-界面汉字
插件对应该字体目录:D:\project\vs\obs\obsstudio21.12\build\rundir\Debug\data\obs-plugins obs对应该字体目录:D:\project ...
- Java_jdbc 基础笔记之十一数据库连接 (通用的查询方法)
鉴于之前的查询方法,在这里我们可以写一个通用的方法 /** * 鉴于 student.和customer查询的方法有好多相同之处,在此可以写一个通用的方法 */ public <T> T ...