zoukankan      html  css  js  c++  java
  • 如何在运行时更改JMeter的负载

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

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

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

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

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

    增加图像更改jmeter加载运行时

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

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

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

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

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

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

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

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

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

     

    netstat -an | find9000


    增加图像如何在运行时间jmeter期间更改吞吐量

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

    setprop “hits”  args [ 0 ]);
    

    增加图像jmeter运行时更改


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

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

    java -jar .libshclient.jar localhost 9000 .shupdate_parameter.bsh 10

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

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

    增加图像使用beanshell改变jmeter中的负载

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

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

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

    测试计划结构如下所示:

    增加图像使用恒定吞吐量计时器更改jmeter测试吞吐量

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

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

    增加图像测试运行,吞吐量更新

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

    增加图像在jneter测试期间改变吞吐量

  • 相关阅读:
    java 微信公众号素材 新增其他类型永久素材
    @schedule
    idea 打包的jar运行报 “XXX中没有主清单属性”
    openjdk没有ssl支持的相关证书包,导致使用HTPPS调用第三方接口时候报错误 InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
    查询端口是否开通
    企业微信-之无法修改成员手机号
    PostgreSQL使用distinct关键字给单独的几列去重
    centos全屏幕退出:Alt+Enter
    github上OC 和swift框架精选
    github每日精选---iOS版
  • 原文地址:https://www.cnblogs.com/a00ium/p/10807249.html
Copyright © 2011-2022 走看看