浅谈线程组插件之bzm - Arrivals Thread Group
bzm - Arrivals Thread Group 是 JMeter 中的一个高级插件,由 BlazeMeter 提供,旨在为性能测试提供更灵活、更贴近实际场景的负载生成方式。与传统的线程组不同,Arrivals Thread Group 通过控制“到达率”(arrivals per time unit)来模拟用户流量,更加精准地匹配真实世界的用户行为模式。这对于需要精确控制吞吐量(TPS, Transactions Per Second)或针对特定时间间隔内用户到达模式进行测试的场景特别有用。
功能亮点
● 目标TPS控制:允许用户直接设置期望的目标吞吐量(Transactions Per Second),自动调整线程数量以达成这一目标。
● 动态负载生成:根据设定的到达率动态创建和销毁线程,更真实地模拟用户访问模式。
● 精确时间调度:支持定义复杂的用户到达时间表,包括平滑递增、递减或基于具体时间点的负载模式。
● 自适应性能测试:能够根据系统响应自动调整压力,确保测试在不超出系统承受能力的前提下进行。
参数配置说明
- Target Rate (arrivals/second): 指定每秒期望的到达次数(即TPS目标)。这是设置线程组目标吞吐量的核心参数。
- Ramp-up Time (sec): 加载时间,指从测试开始到达到最大TPS所需的时间。这有助于模拟用户逐渐增加的场景。
- Ramp-Up Steps Count:可以理解为每秒启动用户数,比如Target Rate设置为100,Ramp-Up Time设置为20,Ramp-Up Steps Count设置为5,,则可以理解为在20s时间里面,每4s就拉起20个用户,直到用户数为100.
- Hold Target Rate Time (seconds):达到目标TPS后维持该速率的时间。此设置对于稳定负载测试尤其重要。
- Thread iterations Limit:线程循环次数限制
- Log Threads Status into File:保存线程状态至文件
- Concurrency Limit:最大线程数限制
应用实例
我们编写如下脚本
bzm - Arrivals Thread Group:
● Target Rate (arrivals/second): 设置为50。
● Ramp-up Time (sec): 设置为2
● Ramp-Up Steps Count: 设置为5
● Hold Target Rate Time (seconds): 设置为10
● Log Threads Status into File:设置路径为D:\test.txt
我们可以看到绘图内容如下:
运行脚本,我们查看聚合报告
TPS维持在60附近,打开对应保存的路径内容,我们可以获取下面信息
2024/07/31 10:50:29.151,0,0.1,ARRIVAL,bzm - Arrivals Thread Group-ThreadStarter 1-1,false,0,0,0,0,null,0,0,0
2024/07/31 10:50:29.173,0,0.1,COMPLETION,bzm - Arrivals Thread Group-ThreadStarter 1-1,false,0,0,0,0,null,0,0,0
注意事项
● 确保已安装 bzm Plugins for JMeter 或使用包含该插件的 JMeter 分发版。
● 由于动态调整线程数,监控资源使用情况和系统响应时间对于评估测试有效性至关重要。
● 调整参数时需考虑服务器的实际处理能力和网络环境,避免造成不必要的服务中断。
总结
bzm - Arrivals Thread Group 插件为JMeter用户提供了强大的工具,用于构建复杂且贴近现实的负载测试场景。通过精细控制用户流量模式,可以帮助开发者和测试工程师更好地理解系统的性能瓶颈和极限,从而优化应用性能。正确配置和利用此插件,可以极大地提高性能测试的准确性和效率。