问题描述
我想了解在运行时实现的实际JMeter吞吐量行为.
I want to understand the actual JMeter throughput behavior achieved at runtime.
场景-我正在使用恒定吞吐量计时器和bean脚本在运行时提高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一起,配置具有固定#thread和无限循环迭代的简单线程组.使用HTTP采样器进行GET调用.测试计划中未添加其他计时器或插件.
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的目标吞吐量,我注意到实际实现的吞吐量值主要受两个因素限制-
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 -
- 我的线程组中的线程.
- 目标应用程序的性能瓶颈.
我对这两个限制都有疑问-
I have questions regarding both the limitations -
-
一旦使用当前线程组中的所有线程实现了最高吞吐量(假设目标应用程序还没有错误),那么有一种方法可以在运行时动态增加#threads来实现更高的JMeter吞吐量?
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?
推荐答案
-
您可以对线程组中的线程数使用相同的技巧,只需使用 __ P()函数,您将可以使用Beanshell服务器对其进行操作.另一种选择是使用 JSR223测试元素和Groovy语言来添加新的线程在哪里/何时需要,如:
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不会识别"身份.任何事情,它只会尝试尽快执行Samplers,每秒的请求数取决于2个因素:
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吞吐量值的限制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!