📈 负载模型设计

02-01 | 测试方法论负载模型场景设计并发模型

📌 一句话概括

负载模型决定了测试结果的可靠性——用错误的负载模型测试,再精准的数据也是"准确但无用"的结果。银行系统的负载模型设计需要基于生产监控数据精确还原业务特征,而非凭经验拍脑袋。

💡 负载模型三要素

一个完整的负载模型包含三个核心要素:

1. 并发模式

系统承受负载的方式,决定了压力的施加特征:

模型特点适用场景银行实例
阶梯递增逐步增加并发数,每阶梯稳态运行5-15分钟寻找性能拐点、容量摸底核心系统上线前阶梯加压
恒定并发固定并发数持续运行2-24小时稳定性测试、内存泄漏检测年终决算前7×24小时稳定性验证
突发脉冲短时间(30秒-5分钟)极高并发冲击秒杀、抢购、峰值保护验证理财发售、纪念币预约峰值模拟
波浪式周期性增减并发,模拟日间业务波动24小时业务曲线模拟模拟工作日08:00-22:00业务起伏
业务混合多交易类型按生产占比混合执行真实业务场景还原转账30%+查询50%+缴费10%+其他10%

2. 业务比例

基于生产环境监控数据统计各交易类型的实际调用占比。关键步骤:从生产日志提取交易量分布→按TPS计算各交易占比→设计混合场景的线程组权重。

3. 思考时间

模拟真实用户操作间隔,避免"机器人式"的密集请求。银行柜面交易思考时间通常5-30秒,网银交易1-5秒。忽略思考时间会导致测试TPS虚高、偏离真实场景。

🔍 测试实战

1. 从生产日志提取负载模型

操作:采集过去30天的生产交易日志,按小时统计TPS、各交易占比、平均响应时间,生成24小时业务基线曲线。选取P95日作为"常规峰值"、历史最高日作为"极端峰值"设计测试场景。

2. 负载模型验证

操作:先用低并发验证负载模型的业务比例准确性,检查各交易的TPS分布是否与生产数据一致,调整线程组权重后再正式加压。

⚠️ 常见坑点

  1. 负载模型偏离真实流量——直接用默认模型测试,交易比例和并发模式与生产差异巨大
  2. 忽略思考时间——所有请求密集发送,TPS虚高20%-50%,掩盖真实瓶颈
  3. 混合比例固定不变——真实场景下白天查询多、夜间批处理多,比例是动态变化的
  4. 只用峰值设计模型——长时间满负荷运行在现实中不存在,应设计峰谷切换的波浪模型

📖 延伸阅读