我已阅读 jmeter 用户手册中的高斯随机计时器信息,但很难理解。任何人都有与此相关的想法,请举例说明,非常感谢。提前致谢。
4 回答
高斯随机定时器在恒定延迟偏移附近有一个随机偏差(基于高斯曲线分布)。
例如:
- 偏差:100 毫秒
- 恒定延迟偏移:300 ms
延迟将在 200 ms (300 - 100) 和 400 ms (300 + 100) 之间变化,基于大约 68% 的情况的高斯分布。
我将尝试用已经发布的示例之一来解释它:
- 恒定延迟偏移:1000 ms
- 偏差:500 毫秒
大约68% 的延迟将在 [500, 1500] 毫秒之间(=[1000 - 500, 1000 + 500] 毫秒)。
根据文档(强调我的):
总延迟是高斯分布值(平均值为 0.0,标准差为 1.0)乘以您指定的偏差值和偏移值的总和
Apache JMeter 调用Random.nextGaussian()
*range
来计算延迟。正如Wikipedia 中所解释的,仅在大约 68% 的情况下, 的值nextGaussian()
将介于 [-1,1] 之间。从理论上讲,它可以具有任何值(尽管获得此区间之外的值的概率会随着与它的距离而迅速降低)。
作为证明,我编写了一个简单的 JMeter 测试,它使用虚拟采样器和高斯随机定时器启动一个线程:3000 ms 恒定延迟,2000 ms 偏差:
为了排除 cpu 负载问题,我配置了一个额外的并发线程,带有另一个虚拟采样器和一个常量计时器:5000 毫秒:
结果非常有启发性:
以样本 10 和 12: 为例9h53'04.449" - 9h52'57.776" = 6.674"
,这是与配置3.674"
相比的偏差2.000"
!您还可以验证常量计时器是否仅偏离约 1 毫秒。
我可以在 Gmane jmeter 用户列表中找到对这些高斯计时器的一个很好的解释:Timer Question。
Gaussian Random Timer 与 Uniform Random Timer 几乎相同。
在 Uniform Random Timer 中,围绕恒定偏移的变化具有线性分布
在高斯随机定时器中,围绕恒定偏移的变化具有高斯曲线分布。
常数延迟offset(mu)=300 ms,deviation(si)=100 ms mu-si=200,mu+si=400,两个线程之间的时间间隔有68%的机会在[200,400]范围内
mu-2(si)=100,mu+2(si)=500,两个线程之间的时间间隔有95%的机会在[100,500]范围内
mu-3(si)=0,mu+3(si)=300,两个连续线程之间的时间间隔有99.7%的机会在[0,600]范围内
当你继续这样下去时,你会得到 100% 的概率,即两个线程之间的时间间隔是 100%
我将自己限制为 3 次迭代,因为 mu-4(si) 产生一个负值,而经过的时间在这个宇宙中始终是一个正值。
但是依赖高斯定时器是非常不现实的,因为我们有恒定的定时器和没有标准偏差 (si) 的恒定吞吐量定时器。
希望它有所帮助。