容量压测基础:目标、关键指标与压测类型

容量压测是保障系统在真实流量冲击下稳定运行的核心手段。在 Runbook 联动场景中,压测结果直接驱动巡检阈值调整、扩缩容策略触发和故障预案执行。本节从目标、关键指标和压测类型三个维度建立容量压测的知识基线。

2.1 容量压测的核心目标

容量压测不是简单的“发请求看报错”,而是围绕以下四个目标展开的工程活动:

目标维度 说明 Runbook 联动价值
容量摸底 确定系统在指定硬件/软件配置下的最大承载能力 为巡检脚本提供基线阈值(如 CPU 80% 触发告警)
瓶颈定位 发现 CPU、内存、IO、网络、连接池等资源短板 驱动巡检脚本增加专项检查项(如连接池水位)
弹性验证 验证自动扩缩容、限流降级、熔断等策略是否按预期生效 校验 Runbook 中弹性动作的触发条件和执行效果
容量规划 根据业务增长预测,输出资源扩容建议和压测报告 更新巡检脚本的告警阈值和容量水位标记
SRE 经验:容量压测的最终产出不是“最大 QPS 数字”,而是一组可被 Runbook 消费的容量基线数据,包括安全水位、告警水位、熔断水位和对应的关键指标阈值。

2.2 关键指标:QPS / RT / TP99 / 错误率

容量压测的四大核心指标构成了系统健康度的“四象限”。任何单一指标都不能完整描述系统状态,必须组合分析。

指标 全称 定义 典型阈值参考
QPS Queries Per Second 每秒处理的请求数,代表系统吞吐能力 根据业务场景设定,如核心链路 5000 QPS
RT Response Time 请求从发出到收到完整响应的耗时(单位 ms) P99 RT < 200ms(在线业务)
TP99 Top Percentile 99 99% 的请求耗时在此值以下,反映长尾延迟 TP99 < 500ms(容忍上限)
错误率 Error Rate 失败请求数 / 总请求数 × 100% < 0.1%(核心服务)
指标联动关系:当 QPS 持续上升时,RT 和 TP99 会先缓慢增长,到达拐点后急剧恶化;错误率通常在 RT 超过超时阈值后开始攀升。Runbook 巡检脚本应同时监控这四个指标,避免单一指标误判。

2.3 压测类型:负载 / 压力 / 稳定性

根据压测目的和施压模式,容量压测分为三种基本类型。Runbook 编排时需要根据场景选择或组合使用。

  • 负载测试(Load Testing):模拟正常业务流量,验证系统在预期负载下的表现。目标:确认系统能否承载日常峰值流量。Runbook 场景:日常巡检、发布前回归验证。
  • 压力测试(Stress Testing):持续增加负载直至系统崩溃或达到瓶颈,找到系统的极限承载点。目标:确定最大容量和失效模式。Runbook 场景:容量规划、弹性策略验证。
  • 稳定性测试(Stability / Soak Testing):在中等负载下长时间运行(数小时至数天),观察系统是否存在内存泄漏、连接泄漏、GC 异常等慢性问题。目标:验证系统长期运行的可靠性。Runbook 场景:大促前长稳演练、版本长期运行验证。
容量压测类型与 Runbook 联动关系 负载测试 预期负载 · 日常峰值 压力测试 极限负载 · 寻找瓶颈 稳定性测试 长时间 · 慢性问题 Runbook 联动输出 巡检阈值 · 扩缩容策略 · 告警基线 容量水位标记 · 预案触发条件 💡 编排建议: Runbook 应支持按场景选择压测类型,并在压测结束后自动更新巡检脚本的阈值配置。

2.4 压测类型的选择矩阵

在实际 Runbook 编排中,需要根据压测目标和系统状态选择合适的压测类型。下表总结了三种类型的核心差异和适用场景:

对比维度 负载测试 压力测试 稳定性测试
施压模式 阶梯递增至目标负载 持续递增直至系统崩溃 固定中等负载长时间运行
持续时间 10~30 分钟 30~60 分钟 4~24 小时
主要关注点 响应时间、错误率 最大 QPS、瓶颈点 内存趋势、GC 行为、连接泄漏
Runbook 触发场景 发布前回归、日常巡检 容量规划、弹性策略验证 大促前长稳演练、版本长期验证
失败标准 RT/错误率超过阈值 系统不可用或指标急剧恶化 资源占用持续增长不收敛
常见误区:不要用负载测试的结果来推断系统的极限容量。负载测试只验证“预期负载”下的表现,而压力测试才能暴露系统的真实上限。Runbook 编排时,建议先执行压力测试确定极限值,再根据安全系数设定负载测试的目标值。

2.5 指标采集与 Runbook 集成要点

容量压测的指标数据需要被 Runbook 巡检脚本消费,因此采集和上报方式必须标准化:

  • QPS 采集:从负载均衡器(如 Nginx、ALB)或网关层获取,使用 Prometheus Counter 类型指标。
  • RT / TP99 采集:从应用侧埋点(如 OpenTelemetry、SkyWalking)或中间件(如 Redis、MySQL)慢日志获取。
  • 错误率采集:区分业务错误(如 4xx)和系统错误(如 5xx、超时、连接拒绝),分别上报。
  • 资源指标关联:将 QPS 与 CPU、内存、IO 等系统指标做时间对齐,便于定位瓶颈。
# 示例:PromQL 查询压测期间的 TP99 延迟(假设指标名为 http_request_duration_seconds)
histogram_quantile(0.99,
  sum(rate(http_request_duration_seconds_bucket{job="api-server"}[5m])) by (le)
)
Runbook 集成建议:在压测脚本中增加指标断言步骤,压测结束后自动比对指标是否在基线范围内。如果 TP99 超过告警阈值,Runbook 应自动触发巡检脚本的阈值调整流程,并通知 SRE 确认。