如何在JMeter中配置1小时周期、每2分钟执行特定事务的负载测试
JMeter 1小时负载测试配置方案
核心结构与基础配置
- 线程组设置
- 添加
Thread Group,在「Duration (seconds)」字段填入3600,确保测试持续1小时。线程数、Ramp-Up时间根据你的负载需求自行调整。 - 添加
Once Only Controller到线程组下,将「Launch」「Login」对应的采样器(如HTTP Request)放入其中,保证每个线程仅在启动时执行一次登录流程。
- 添加
每2分钟执行的事务配置(第5-8项)
要实现每2分钟触发一次「Create order item」「Fill details save」「Order history」「View order」,推荐两种实用方案:
方案1:并行分支(持续执行3、4项 + 定时执行5-8项)
适合需要同时运行常规操作和定时任务的场景:
- 在线程组下添加
Parallel Controller,拆分两个并行分支:- 分支1:持续执行3、4项事务
- 添加
Loop Controller(不设置循环次数,默认无限循环至测试结束),将「Click product」「Click item」采样器放入其中。可添加Constant Timer设置这两项操作的执行间隔(如1000毫秒,按需调整)。
- 添加
- 分支2:每2分钟执行5-8项事务
- 添加
Loop Controller,设置循环次数为30(1小时包含30个2分钟周期)。 - 在该Loop Controller内,先添加
Constant Timer,设置延迟时间为120000毫秒(即2分钟)。如果需要第一次启动就执行5-8项,可配合If Controller判断循环次数,第一次跳过定时器(条件:${__jexl3(${__jm__Loop Controller__idx} == 0,)})。 - 将5-8项的采样器按顺序放入,建议用
Transaction Controller包裹这四个采样器,方便后续统计整体事务指标。
- 添加
- 分支1:持续执行3、4项事务
方案2:串行触发(常规操作中插入定时任务)
适合按顺序执行常规操作,每2分钟插入一次5-8项的场景:
- 在线程组下添加
Loop Controller(无限循环),内部包含:- 「Click product」「Click item」采样器,添加
Constant Timer设置执行间隔。 - 添加
If Controller,使用时间函数判断是否到达触发节点:- 条件填写:
${__jexl3(${__time(,)} - ${__P(lastRun,0)} >= 120000,)} - 在5-8项事务执行完成后,添加
__setProperty()函数更新lastRun为当前时间(如${__setProperty(lastRun,${__time(,)},)}),确保下一次触发间隔为2分钟。
- 条件填写:
- 将5-8项采样器放入
If Controller内,满足条件时自动执行。
- 「Click product」「Click item」采样器,添加
额外优化建议
- 所有独立事务尽量用
Transaction Controller包裹,便于统计响应时间、成功率等核心指标。 - 添加
Summary Report「View Results Tree」等监听器,实时监控测试数据。 - 注意定时器作用域:若定时器放在控制器下,会作用于控制器内所有采样器;若放在单个采样器前,仅对该采样器生效。
内容的提问来源于stack exchange,提问作者zenitsu Agastuma
相关产品推荐
相关产品推荐

