3. 容量压测基础:压测目标、压测类型与关键指标
容量压测是SLO反推水位口径的实践起点。没有准确的压测数据,任何容量模型都是空中楼阁。本节从压测的目标出发,厘清三种核心压测类型的差异,并定义后续反推口径所需的三个关键指标:QPS、RT、Error Rate。
3.1 压测的三大目标
在SRE语境下,压测不是为了“压垮系统”,而是为了回答三个问题:
| 目标 | 核心问题 | 与SLO的关联 |
|---|---|---|
| 发现容量天花板 | 系统在SLO达标的前提下,能承受的最大负载是多少? | 直接决定SLO的容量边界 |
| 验证弹性策略 | 当负载超过阈值时,自动扩缩容/限流/降级是否按预期生效? | 影响SLO的恢复时间目标 |
| 校准资源模型 | CPU/内存/网络与QPS之间的换算系数是否与生产一致? | 支撑SLO反推的水位口径 |
SRE实践提示: 压测目标必须与SLO绑定。例如“在99%请求RT ≤ 200ms的条件下,单机最大QPS为800”——这才是可反推容量的有效压测结论。
3.2 三种核心压测类型
根据测试目的不同,容量压测分为以下三类。在实际项目中,通常按负载→压力→耐久的顺序执行。
| 类型 | 目的 | 负载模式 | 持续时间 | 典型场景 |
|---|---|---|---|---|
| 负载测试 | 验证系统在预期正常负载下的SLO达标情况 | 阶梯递增至目标QPS | 5–15分钟 | 日常峰值、大促预估 |
| 压力测试 | 找到系统崩溃点或SLO拐点 | 持续递增直至过载 | 10–30分钟 | 容量摸底、限流阈值标定 |
| 耐久测试 | 验证系统在持续负载下的稳定性(内存泄漏、GC抖动) | 恒定高负载(70%–80%上限) | 数小时至数天 | 长连接服务、批处理系统 |
常见误区: 很多团队只做“压力测试”而跳过“负载测试”,导致压测结论只有“最大QPS”却没有“SLO达标QPS”。后者才是反推容量的有效口径。
3.3 关键压测指标:QPS / RT / Error Rate
所有压测结果最终都要收敛到三个指标上。这三个指标也是后续SLO反推水位口径的输入变量。
3.3.1 QPS(Queries Per Second)
- 定义: 每秒成功处理的请求数。
- 压测中的角色: 负载强度的直接度量,是容量规划的“流速”单位。
- 注意: 区分发送QPS(压测工具发出的请求数)与成功QPS(服务端返回2xx/成功的请求数)。反推容量时使用成功QPS。
3.3.2 RT(Response Time)
- 定义: 从发送请求到收到完整响应的时间,通常关注P50、P95、P99。
- 压测中的角色: 系统压力的“温度计”。RT开始显著上升,通常意味着接近容量拐点。
- 与SLO的关系: 容量压测的“达标”标准就是RT满足SLO阈值(如P99 ≤ 200ms)。
3.3.3 Error Rate(错误率)
- 定义: 错误请求数 / 总请求数 × 100%。
- 压测中的角色: 系统健康的“红线”。错误率超过SLO阈值(如0.1%)即判定为压测失败。
- 常见错误类型: 超时、5xx、限流拒绝、连接池耗尽。
| 指标 | 单位 | 压测中的典型拐点信号 | 对SLO反推的影响 |
|---|---|---|---|
| QPS | req/s | 增长曲线变平(系统已达上限) | 确定容量天花板 |
| RT (P99) | ms | 从平稳区进入陡增区 | 确定SLO达标边界 |
| Error Rate | % | 从0%跳变到非零值 | 确定SLO失效点 |
反推口径核心公式(预告):
其中“压测达标QPS”就是RT和Error Rate同时满足SLO阈值时的最大QPS。
容量水位 = 压测达标QPS × 资源冗余系数其中“压测达标QPS”就是RT和Error Rate同时满足SLO阈值时的最大QPS。
3.4 压测指标与SLO反推的衔接
压测结束后,我们得到一组三元组数据:(QPS_max, RT_p99, ErrorRate)。其中只有满足 RT_p99 ≤ SLO_RT 且 ErrorRate ≤ SLO_ErrorRate 的 QPS_max,才能作为后续反推容量的基准水位。
压测结论示例:
压测类型: 负载测试
SLO约束: P99 RT ≤ 200ms, Error Rate ≤ 0.1%
压测结果:
- 达标最大QPS: 1200 req/s (P99 RT=185ms, Error Rate=0.02%)
- 临界QPS: 1400 req/s (P99 RT=320ms, Error Rate=0.5%)
结论: 基准水位 = 1200 req/s