浅谈定时器之泊松随机定时器
“泊松随机定时器”(Poisson Random Timer),它允许你基于泊松分布来随机化请求之间的延迟时间,这对于模拟具有随机到达率的事件特别有用,如用户访问网站或服务的请求。
泊松分布简介
泊松分布是一种统计与概率论中常见的离散概率分布,常用于描述在给定时间内,某个事件发生固定次数的概率。例如,在网站访问场景中,泊松分布可以用来模拟单位时间内用户请求的随机到达模式。
泊松随机定时器的工作原理
该定时器在每个线程(即虚拟用户)发送请求之前,会根据泊松分布计算出一个随机的延迟时间。这意味着请求之间的等待时间将遵循一种统计规律,而不是完全随机或者固定不变,从而更贴近实际用户的访问模式。
配置参数
- Lambda (in milliseconds): 这是泊松分布的一个关键参数,表示期望的事件发生率,单位是毫秒。简单来说,如果你设置Lambda为1000ms,意味着期望每秒钟有一个事件发生。JMeter会根据这个参数计算出一个随机的延迟时间。
- Constant Delay Offset (in milliseconds): 这是一个固定的偏移量,会在计算出的泊松分布延迟时间上加上这个值。它可以用来确保请求之间至少有最短的等待时间。
使用场景
● 模拟真实用户流量:当需要模拟不定期但平均速率恒定的用户请求时,泊松随机定时器非常有效。
● 压力测试:在进行压力测试时,可以利用此定时器来模拟突发的用户访问高峰,以评估系统的稳定性。
● 负载均衡测试:在测试系统如何处理随机分布的负载时,可以使用此定时器来模拟不同时间段内的负载变化。
应用实例
我们编写如下脚本
线程组:线程数设置为15,其他默认
泊松随机定时器:Lambda (in milliseconds)设置为1000,Constant Delay Offset (in milliseconds)设置为3000
BeanShell 取样器:编写如下脚本
log.info("test");
运行脚本,查看JMeter脚本日志如下
2024-07-01 15:19:05,893 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,010 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,034 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,078 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,154 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,163 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,341 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,380 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,469 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,481 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,523 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,643 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,702 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,800 INFO o.a.j.u.BeanShellTestElement: test
2024-07-01 15:19:06,915 INFO o.a.j.u.BeanShellTestElement: test
泊松分布知识可以通过如下链接了解泊松分布
注意事项
● 性能影响:虽然泊松随机定时器能更真实地模拟用户行为,但它相比固定延迟可能会增加测试执行的不确定性,影响测试结果的可重复性。
● 参数调整:Lambda值的选择需要基于对被测系统的了解和预期的用户行为分析,错误的设置可能导致测试结果失真。
● 资源消耗:在大量线程下使用此定时器可能增加CPU的使用率,因为每次延迟都需要计算。
总结
泊松随机定时器是JMeter中一个高级且功能强大的组件,它使得性能测试能够更加贴近实际情况,尤其是在需要模拟随机到达请求的场景下。通过合理配置Lambda和偏移量,测试工程师能够创建更加复杂和真实的负载模型,从而提高测试的有效性和准确性。在设计测试计划时,应综合考虑测试目标、系统特性以及期望模拟的用户行为模式,来决定是否以及如何使用泊松随机定时器。