2. 容量压测基础

在平台工程视角下,容量压测是内部开发者平台(IDP)提供的一项关键自服务能力。它通过模拟真实用户负载,验证系统在预期或极限条件下的行为表现,从而保障服务上线后的稳定性与资源效率。本章将系统性地定义容量压测、明确其目标、解析核心指标,并区分三种基本压测类型。

2.1 容量压测的定义与目标

容量压测(Capacity Testing)是一种非功能性测试实践,旨在确定系统在特定负载水平下的性能边界、资源消耗与稳定性特征。在 IDP 集成场景中,压测不再是孤立的测试活动,而是嵌入在 CI/CD 流水线中的标准化作业。

核心目标:
  • 确定最大容量:找到系统在不违反 SLA 的前提下能处理的最大并发用户数或请求量。
  • 验证资源规划:确认当前资源配置(CPU、内存、网络)是否满足业务增长预期。
  • 发现性能瓶颈:定位数据库连接池、线程池、缓存命中率等关键组件的瓶颈点。
  • 建立性能基线:为每次代码变更提供可对比的性能基准,防止回归。
  • 辅助容量规划:基于压测数据预测未来资源需求,指导弹性伸缩策略。

2.2 关键性能指标

压测结果通过一组标准化的指标来量化。下表列出了平台工程团队最关注的四个核心指标及其在 IDP 中的典型监控方式:

指标 全称 定义 IDP 监控要点
TPS Transactions Per Second 系统每秒成功完成的事务数(通常包含多个请求的完整业务操作) 事务成功率、事务响应时间分布
QPS Queries Per Second 系统每秒处理的查询或请求数(更侧重单一接口或查询操作) 请求吞吐量、请求队列深度
RT Response Time 从发送请求到收到完整响应所经过的时间(通常关注 P50、P95、P99) 响应时间百分位、超时率
错误率 Error Rate 失败请求数占总请求数的百分比(HTTP 5xx、超时、业务异常) 错误类型分布、错误趋势
平台工程提示: 在 IDP 中,建议将 TPS/QPS 与 RT 联合观察。单纯追求高 TPS 而忽略 RT 恶化,往往意味着系统正在接近饱和点。通常以 P99 RT 超过 500ms 作为需要扩容或优化的预警线。

2.3 压测类型

根据测试目的不同,容量压测可分为三种基本类型。平台工程团队需要为开发者提供清晰的类型选择指南,并将其模板化到 IDP 的压测作业模板中。

2.3.1 负载测试(Load Testing)

模拟预期的正常业务负载,验证系统在典型流量下的性能表现。目标是确认系统能否在预期并发数下稳定运行,且所有指标在 SLA 范围内。

  • 典型场景:日常高峰流量模拟(如 1000 QPS 持续 30 分钟)。
  • IDP 集成方式:作为发布流水线中的“预发布验证”步骤。

2.3.2 压力测试(Stress Testing)

逐步增加负载,直至系统达到极限或崩溃,以发现系统的最大容量和失效模式。目标是找到系统的“拐点”和“熔断点”。

  • 典型场景:从 1000 QPS 逐步递增至 5000 QPS,观察系统何时开始拒绝请求。
  • IDP 集成方式:作为容量规划或大促前的专项压测作业。

2.3.3 稳定性测试(Stability Testing / Soak Testing)

在中等负载下长时间运行(如 4-24 小时),检测内存泄漏、连接泄漏、GC 异常等随时间累积的问题。目标是验证系统的长期运行可靠性。

  • 典型场景:以 70% 的预估峰值负载持续运行 8 小时。
  • IDP 集成方式:作为夜间或周末的定时压测任务,自动生成稳定性报告。
常见误区: 不要将压力测试与负载测试混为一谈。负载测试关注“能否正常服务”,压力测试关注“何时会崩溃”。在 IDP 中,建议为两种类型设置不同的作业模板和告警阈值。

2.4 压测类型对比与选择

下表从多个维度对比三种压测类型,帮助开发者在 IDP 中快速选择合适的作业模板:

维度 负载测试 压力测试 稳定性测试
主要目标 验证预期负载下的性能 寻找系统极限与失效点 检测长期运行下的稳定性
负载模式 恒定或小幅波动 阶梯式递增 恒定中低负载
持续时间 短(10-60 分钟) 中(30-120 分钟) 长(4-24 小时)
关注指标 RT、错误率、TPS 最大 TPS、资源饱和度 内存趋势、GC 频率、连接数
IDP 推荐场景 发布流水线验证 容量规划、大促压测 版本上线前长稳验证

2.5 容量压测流程概览

下图展示了在 IDP 中执行一次标准容量压测的完整流程,从作业创建到报告归档:

容量压测流程概览 容量压测标准流程(IDP 集成) 1. 创建压测作业 2. 配置压测参数 3. 执行压测 4. 实时监控 5. 分析报告 6. 归档与基线 平台工程要点: • 步骤 1-3 由开发者通过 IDP 自服务完成,步骤 4-6 由平台自动执行。 • 压测基线(步骤 6)自动与上一次压测结果对比,差异超过阈值则阻断发布。

2.6 平台工程视角下的压测指标解读

在 IDP 中,指标不是孤立的数字,而是与资源成本、服务等级目标(SLO)直接关联。以下是一个典型的指标关联分析示例:

# 压测结果摘要(示例)
场景: 订单创建接口负载测试
目标 TPS: 500
实际 TPS: 520
P99 RT: 320ms (SLO: <500ms)
错误率: 0.02% (SLO: <0.1%)
CPU 平均利用率: 68%
内存平均利用率: 72%

结论: 通过。当前配置可支撑目标负载,建议关注内存趋势。
IDP 集成建议:
  • 将 TPS、RT、错误率作为压测作业的“通过/失败”判定条件,自动阻断不合格的发布。
  • 将资源利用率(CPU、内存)作为“容量预警”指标,触发自动扩容或通知运维团队。
  • 每次压测结果自动更新到服务的“性能基线”仪表盘,支持历史趋势对比。