我有一个JMeter测试计划,看起来像这样:
- 并发线程组
- 吞吐量整形计时器
- 取样器1
- 取样器2
我的期望是所有线程都应该按顺序通过采样器1和采样器2。然而,当我开始测试时,日志显示线程只执行采样器1一段时间,然后在很长时间后才执行采样器2。这几乎就像是线程在第一个采样器之后“休眠”,然后在运行采样器2时被唤醒。
日志输出示例:
Sampler 1 - thread 1
Sampler 1 - thread 2
Sampler 1 - thread 3
Sampler 1 - thread 4
Sampler 1 - thread 5
Sampler 1 - thread 6
Sampler 1 - thread 7
... some time later
Sampler 2 - thread 1
Sampler 1 - thread 8
Sampler 2 - thread 3
为什么第二个采样器没有在第一个采样器运行后立即出现?这几乎就像吞吐量计时插件没有同时处理这对采样器,它只是在开始时按计划运行采样器1。我希望输出在采样器之间看起来更加“平衡”,类似于:
Sampler 1 - thread 1
Sampler 1 - thread 2
Sampler 2 - thread 1
Sampler 1 - thread 3
Sampler 2 - thread 2
Sampler 2 - thread 3
1条答案
按热度按时间mdfafbf11#
看一看JMeter Timers文档:
请注意,计时器在其所在范围内的每个采样器之前进行处理
如果您使用吞吐量整形计时器将JMeter的吞吐量限制为某个值,则绝对可以预期吞吐量整形计时器将在采样器2之前引入延迟。
它还在采样器1之前引入了延迟(从线程组的第2次迭代开始)
我也不明白你的“平衡”期望,JMeter线程是绝对独立的,他们正在执行采样器,因为他们可以快,所以除非响应时间是静态的,不改变你不会有任何可预测的执行顺序。
当然,每个线程都将颠倒执行采样器(或根据逻辑控制器),但在并发性方面,“全局”执行顺序是无法“预测”的,因为响应时间可能(也将)会发生变化。
更多信息:A Comprehensive Guide to Using JMeter Timers