JMeter场景配置:1000线程单登录一次,后续请求循环执行1小时
如何在JMeter中实现“仅一次登录+循环执行后续请求”的性能测试场景
这个场景在JMeter里非常典型,我帮你梳理下具体的实现步骤,确保每个线程只登录一次,之后持续执行目标请求直到1小时结束:
1. 搭建基础测试结构
首先创建核心的组件层级,按这个结构来:
测试计划 ├─ HTTP Cookie管理器 ├─ (可选)CSV数据文件设置 ├─ 线程组 │ ├─ 仅一次控制器(Once Only Controller) │ │ ├─ 登录请求 │ │ └─ (可选)登录成功断言 │ └─ 循环控制器(Loop Controller) │ ├─ 登录后请求1 │ ├─ 登录后请求2 │ └─ (可选)业务断言
2. 配置线程组
线程组是控制整体负载的核心,按你的需求设置:
- 线程数:1000(模拟1000个并发用户)
- Ramp-Up时间:建议设置为60秒(让1000个线程在1分钟内逐步启动,避免瞬间集中登录打垮服务器,可根据实际情况调整)
- 持续时间(秒):3600(对应1小时运行时长)
- 不要设置“循环次数”,让线程组靠持续时间控制结束时机
3. 用仅一次控制器实现单次登录
把你的登录请求(带账号、密码等参数)放到仅一次控制器下面:
- 这个控制器的特性就是:每个线程在整个生命周期内,只会执行里面的请求一次,不管后续循环多少次,完美匹配“每个用户仅登录一次”的要求
- 如果需要每个线程用不同的账号,添加CSV数据文件设置,把账号密码存成CSV文件(每行一个账号密码),配置“线程共享模式”为
每个线程独立的,这样每个线程会获取唯一的账号
4. 用循环控制器实现后续请求持续执行
在仅一次控制器的同级,添加循环控制器,把所有登录后才能执行的请求放进去:
- 不要给循环控制器设置固定的“循环次数”,留空即可
- 这样循环控制器会一直重复执行里面的请求,直到线程组的1小时运行时长耗尽,刚好满足“登录后多次执行请求”的需求
5. 关键细节补充
- HTTP Cookie管理器:一定要加!它会自动保存登录后的会话Cookie,让后续请求自动带上登录状态,否则登录后请求会因为未授权失败
- 登录断言:建议给登录请求添加响应断言(比如检查返回的
code为200,或者包含“登录成功”的关键字),确保每个线程都成功登录后再执行后续请求 - 小批量验证:正式压测前可以先跑10个线程的小测试,通过“查看结果树”确认登录请求只执行一次,后续请求循环正常,再放大到1000线程
结果验证
运行测试后,通过聚合报告查看:
- 登录请求的样本数应该等于线程数(1000),说明每个线程只执行了一次登录
- 后续请求的样本数会远大于1000,说明一直在循环执行
内容的提问来源于stack exchange,提问作者JMeter_User
相关产品推荐
相关产品推荐

