大促压测:目标 QPS 怎么定,压测模型怎么设计(答题要点)

题目:某电商 App 要在大促前做全链路性能压测,已知大促预估日订单量 5000 万单、日接口请求量 40 亿次。请问你如何推算压测目标(QPS / 并发数),并设计压测模型?(面试口述)

难度:高级
题型:面试口述题

:point_right:参考答案/答题要点:

  1. 先拿数据,别拍脑袋:现网有历史就取网关/埋点的真实峰值 QPS 与分时段曲线;纯新业务才用运营预估业务量反推。
  2. 峰值换算(二八原则):40 亿/天 → 80% 请求集中在 20% 时间 → 平均峰值 QPS ≈ 4e9×0.8/(86400×0.2) ≈ 18.5 万。再叠加大促增长系数(一般取日常峰值的 3~5 倍)作为压测目标值,并按 1.2~1.5 倍留安全水位。
  3. 并发用户数与 QPS 的区分:并发数 ≈ QPS ×(响应时间 + 思考时间),下单场景思考时间长,不能用「并发数 = QPS」糊过去;要说清压的是「并发用户」还是「TPS/QPS」,两者目标要分别给。
  4. 流量模型按真实占比:拉接口调用分布(帕累托前 20 个接口占 80% 流量),按线上真实比例混合施压,重点覆盖下单、支付、库存扣减、优惠券等写链路,别只压读接口和查询。
  5. 数据与环境约束:参数化数据量要够(避免唯一索引冲突导致假失败)、缓存命中率对齐线上、影子库表与压测流量打标(防止污染生产数据)、第三方依赖用 Mock 挡板并单独压测真实链路。
  6. 场景分层:基准(单接口摸底单机能力)→ 负载(预期峰值看 SLA)→ 压力(找拐点与最大容量)→ 稳定性(峰值 80% 跑 8~12 小时看内存泄漏/连接堆积)→ 尖峰秒杀(瞬时高并发)→ 故障演练(限流降级兜底)。
  7. SLA 与结论输出:明确目标(如成功率 ≥ 99.99%、核心接口 P99 ≤ 200ms),压测结束给容量水位表:单机 TPS × 实例数 = 集群容量,按 70% 水位反推需要的机器数与扩容预案,同时给出瓶颈项和风险清单。
  8. 加分:能说清「压测本身可能压挂下游/中间件」的前置沟通、限流阈值的验证要专门做一轮、压测环境差异(配置、数据量级)对结论的影响。