JMeter性能测试:每分钟使用动态user_id的场景模拟求助
解决方案
问题根源
当前配置大概率是Loop Controller仅执行了一轮,或是Cache Manager未正确实现不同user_id组的循环加载,导致仅触发600次请求就停止。
配置步骤
1. 数据源准备与加载
- 将10000个user_id保存为CSV文件,每行一个ID。
- 添加CSV Data Set Config组件,配置:
- 文件名:填写你的CSV文件路径
- 变量名:例如
user_id - 循环模式:选择
All rows - 线程结束时重置:设为
False - 共享模式:选择
All threads,确保所有线程共享同一数据源指针
2. 控制每分钟请求量
- 选择以下任一方式精准控制每分钟600次请求:
- 方式一:添加Constant Timer,设置延迟时间为
${__javaScript(Math.floor(60000/600),)},平均每100ms发送一次请求。 - 方式二:添加Precise Throughput Timer,设置目标吞吐量为
600,时间单位选Minute,直接管控每分钟请求数。
- 方式一:添加Constant Timer,设置延迟时间为
3. 实现分批次切换user_id
放弃Loop Controller+Cache Manager的组合,改用以下组件搭配:
- 线程组设置:线程数设为
600,循环次数选Forever。 - 添加Runtime Controller,设置运行时间为
1800秒(即30分钟),将请求、CSV配置等核心逻辑包裹在内。 - 添加Counter组件:变量名设为
batch_counter,起始值0,递增步长1,最大值设为16(10000/600≈16组,足够覆盖30分钟测试)。 - 修改CSV Data Set Config:设置
Start index为${__javaScript(${batch_counter}*600,)},End index为${__javaScript((${batch_counter}+1)*600-1,)},实现每组600个连续ID的加载。 - 添加Cron Timer,表达式设为
0 * * * * ?,每分钟触发一次batch_counter递增,自动切换到下一组user_id。
4. 验证请求计数
- 添加Summary Report和View Results Tree组件,实时监控请求量是否符合预期。
- 若AWS Cloud指标与JMeter本地统计仍有差异,检查:
- 线程组循环次数是否为
Forever - Runtime Controller的时长是否正确设为1800秒
- CSV Data Set Config的共享模式是否为
All threads
- 线程组循环次数是否为
内容的提问来源于stack exchange,提问作者Harris
相关产品推荐
相关产品推荐

