【发布时间】:2013-07-12 13:35:24
【问题描述】:
我已阅读 jmeter 用户手册中的 Gaussian Random Timer 信息,但很难理解。任何人都有与此相关的想法,请举例说明,非常感谢。提前致谢。
【问题讨论】:
标签: jmeter jmeter-plugins
我已阅读 jmeter 用户手册中的 Gaussian Random Timer 信息,但很难理解。任何人都有与此相关的想法,请举例说明,非常感谢。提前致谢。
【问题讨论】:
标签: jmeter jmeter-plugins
高斯随机定时器在恒定延迟偏移附近有一个随机偏差(基于高斯曲线分布)。
例如:
延迟将在 200 毫秒 (300 - 100) 和 400 毫秒 (300 + 100) 之间变化,基于高斯分布对于大约 68% 的情况。
【讨论】:
我将尝试用已经发布的示例之一来解释它:
大约 68% 的延迟将在 [500, 1500] 毫秒之间(=[1000 - 500, 1000 + 500] 毫秒)。
根据docs(强调我的):
总延迟是高斯分布值(平均值为 0.0,标准差为 1.0)乘以您指定的偏差值和偏移值的总和
Apache JMeter 调用Random.nextGaussian()*range 来计算延迟。正如in the Wikipedia 所解释的,nextGaussian() 的值仅在大约 68% 的情况下将介于 [-1,1] 之间。从理论上讲,它可以具有任何值(尽管获得此区间之外的值的概率会随着与它的距离而迅速降低)。
作为证明,我编写了一个简单的 JMeter 测试,它使用虚拟采样器和高斯随机计时器启动一个线程:3000 毫秒恒定延迟,2000 毫秒偏差:
为了排除 cpu 负载问题,我配置了一个额外的并发线程,带有另一个虚拟采样器和一个常量计时器:5000 毫秒:
结果很有启发性:
以样本 10 和 12 为例:9h53'04.449" - 9h52'57.776" = 6.674",与配置的 2.000" 相比,这是 3.674" 的偏差!您还可以验证常量计时器是否仅偏离大约 1 毫秒。
我可以在 Gmane jmeter 用户列表中找到对这些高斯计时器的非常好的解释:Timer Question。
【讨论】:
Gaussian Random Timer 与 Uniform Random Timer 几乎相同。
在 Uniform Random Timer 中,恒定偏移附近的变化呈线性分布
在高斯随机定时器中,围绕恒定偏移的变化具有高斯曲线分布。
【讨论】:
恒定延迟偏移(mu)=300 ms,偏差(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)的恒定吞吐量定时器。
希望对你有帮助。
【讨论】: