实现目标 JMeter 吞吐量值的限制 [英] Limitations in achieving a target JMeter throughput value

查看:14
本文介绍了实现目标 JMeter 吞吐量值的限制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想了解在运行时实现的实际 JMeter 吞吐量行为.

I want to understand the actual JMeter throughput behavior achieved at runtime.

场景 - 我正在使用此处描述的恒定吞吐量计时器和 beanshell 脚本在运行时增加 JMeter 吞吐量 - https://www.blazemeter.com/blog/how-to-change-jmeters-load-during-runtime.

Scenario - I'm increasing the JMeter throughput at runtime using Constant Throughput Timer and beanshell script as described here - https://www.blazemeter.com/blog/how-to-change-jmeters-load-during-runtime.

测试计划 - 与上述 CTT 一起,配置了具有固定 #threads 和无限循环迭代的简单线程组.使用用于 GET 调用的 HTTP 采样器.测试计划中未添加其他计时器或插件.

Test plan - Along with CTT as described above, simple threadgroup with fixed #threads and infinite loop iterations is configured. HTTP Sampler for GET call is used. No other timer or plugin is added in the test plan.

当我在运行时不断增加 JMeter 的目标吞吐量时,我注意到实际实现的吞吐量值主要受 2 个因素的限制 -

As I keep on increasing the target throughput of JMeter at runtime, I noted that the actual achieved throughput value is limited by mainly 2 factors -

  1. 我的话题组中的话题.
  2. 目标应用的性能瓶颈.

我对这两个限制有疑问 -

I have questions regarding both the limitations -

  1. 一旦使用当前线程组中的所有线程实现最高吞吐量(假设目标应用程序还没有错误),是否有办法在运行时动态增加此时的 #threads 以实现更高的 JMeter 吞吐量?

  1. Once the highest throughput is achieved using all threads in current threadgroup (assuming there're no errors from the target app yet), is there a way to increase the #threads at this point dynamically at runtime to achieve a higher JMeter throughput?

现在,随着我不断增加 JMeter 吞吐量,由于目标应用程序的错误,它无法进一步增加.JMeter 如何识别目标应用程序的性能瓶颈并对其做出反应?它是否会增加任何延迟或杀死线程或应用任何此类机制来将其吞吐量降低到目标应用程序可以承受的最大值?

Now as I keep on increasing JMeter throughput, it can't be increased further due to errors from the target app. How does the JMeter identify performance bottleneck of my target app and react to it? Does it add any delay or kill threads or apply any such mechanism to reduce it's throughput to the max that the target app can sustain?

继续第 2 点,如果 JMeter 通过任何方法识别并应对性能瓶颈,控制其吞吐量以使其保持在最大值内的因素(如错误率、响应延迟等)是什么?目标应用程序的限制?这些因素是否可配置或可扩展?

In continuation with point #2, if JMeter identifies and reacts to the performance bottleneck by any method, what are the factors (like error rate, response latency etc.) that control it's throughput to keep it within the max limit of the target app? Are these factors configurable or extensible?

推荐答案

  1. 你可以用线程组中的线程数玩同样的把戏,只需使用 __P() 函数,您将能够使用 Beanshell 服务器对其进行操作.另一种选择是使用 JSR223 测试元素和 Groovy 语言 添加需要的地方/时间的新线程,例如:

  1. You can play the same trick with the number of threads in the thread group, just define it using __P() function and you will be able to manipulate it using Beanshell server. Another option is using a JSR223 Test Element and Groovy language to add the new thread(s) where/when required like:

ctx.getThreadGroup().addNewThread(0, ctx.getEngine())

  • JMeter 不识别"无论如何,它只是尝试尽可能快地执行采样器,每秒的请求数取决于两个因素:

  • JMeter doesn't "identify" anything, it just tries to execute Samplers as fast as it can and the number of requests per second depends on 2 factors:

    • 您的应用程序需要能够足够快地响应
    • JMeter 本身需要能够足够快地发送请求,即您需要遵循 JMeter 最佳实践

    没有机制";检测被测应用程序的行为,最接近的解决方案是 自动停止监听器

    there are no "mechanisms" which detect the application under test behaviour, the closest solution is Auto Stop Listener

    见第 2 点

    这篇关于实现目标 JMeter 吞吐量值的限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆