jmeter稳定性测试确定用户数(2)
在JMeter中进行稳定性测试(耐久性测试)时,用户数(并发线程数)应根据生产环境的实际负载、系统业务目标及容量规划确定,而非随意设定。以下是确定用户数的完整流程:
一、核心原则
- 模拟生产环境真实负载
用户数应接近生产环境的平均或高峰并发用户数。 - 不超过系统容量
用户数需低于压力测试中的最大容量(如压力测试最大支持3000用户,稳定性测试可设置为2000-2500)。 - 长时间稳定运行
稳定性测试通常持续数小时至数天,用户数需确保系统不崩溃、不累积错误。
二、确定用户数的具体方法
1. 参考生产数据(最优方案)
-
通过监控工具获取
- 查询历史并发用户数(如Prometheus、ELK、APM工具)。
- 计算公式:
并发用户数 = \frac{平均日活跃用户 \times 用户操作集中系数}{每日秒数} \times 平均会话时长
- 示例:
日活用户10,000人,高峰时段20%用户集中操作(2000人),平均会话时长5分钟(300秒),每日秒数86400秒。
并发用户数 ≈(2000 × 300) / 86400 ≈ 7
- 示例:
-
日志分析
解析Web服务器日志(如Nginx),统计每秒请求量(RPS),折算并发用户数:并发用户数 ≈ RPS \times 平均响应时间(秒)
2. 业务指标推演
- 关键业务场景指标
- 如电商系统:每秒订单数(如10单/秒)。
- 根据单用户行为:
1个用户每秒产生0.001单 → 需10,000用户达到10单/秒
。 - JMeter配置:通过
吞吐量控制器(Throughput Controller)
控制业务比例。
3. 阶段式增压法(无生产数据时)
-
逐步加压测试:
从低并发(如50用户)开始,每5分钟增加10%用户,直至:- 响应时间超过阈值(如3秒)。
- 错误率 > 1%。
- 最终用户数 = 临界值 × 70%(预留30%安全缓冲)。
-
容量基准测试:
运行一次压力测试获得最大用户数,取80%最大用户数
作为稳定性测试值。
三、JMeter配置要点
1. 线程组设置
Thread Group
Number of Threads (users): 200 // 最终确定的用户数
Ramp-Up Period (seconds): 300 // 5分钟内逐步启动
Scheduler ☑️
Duration: 28800 seconds (8小时) // 稳定性测试时长
2. 关键监听器
- 聚合报告(Aggregate Report):监控TPS/响应时间。
- 后端监听器(Backend Listener):实时数据写入InfluxDB+Grafana看板。
- 响应时间断言(Response Assertion):标记超时请求为失败。
3. 资源监控
- 使用
JMeter Plugins
+PerfMon
监控服务器:- CPU > 80% → 需减少用户数。
- 内存持续增长 → 存在内存泄漏。
- 磁盘I/O队列堆积 → 存储瓶颈。
四、用户数验证标准
运行稳定性测试后,系统需满足:
- 错误率 < 0.1%(持续统计)。
- 响应时间稳定在基线值±20%内。
- 服务器资源(CPU/内存)无持续上升趋势。
- 日志无异常:无OOM、线程阻塞、数据库死锁。
五、示例场景
假设一个API系统:
- 压力测试最大用户数:1200(错误率<1%)。
- 生产监控高峰用户数:850。
- 稳定性测试用户数取值:
Min(1200×80%, 850×1.2) = Min(960, 1021) → 900
最终设置 900用户持续运行12小时。
结论:稳定性测试用户数的核心是模拟真实场景下的长期负载。若无生产数据,则通过压力测试获取系统临界点并倒退安全值。测试中必须监控系统资源与错误率,动态调整优化方案。