3、压测基础概念:性能压测的目的、常见指标与压测类型

在正式接入 Backstage 压测模板之前,必须建立统一的性能压测认知框架。本章将围绕“为什么压、测什么、怎么测”三个核心问题,系统讲解性能压测的目的、关键指标以及三大压测类型,为后续模板配置与结果分析打下理论基础。

3.1 性能压测的目的

性能压测并非简单的“给系统施压”,而是通过模拟真实用户负载,在受控环境下验证系统的响应能力、稳定性与资源效率。其核心目的可归纳为以下四点:

  • 容量评估:确定系统在正常和峰值负载下的最大处理能力,为容量规划提供数据依据。
  • 瓶颈定位:发现 CPU、内存、数据库连接池、网络带宽等资源瓶颈,明确性能短板。
  • 稳定性验证:检验系统在长时间运行或突发流量下是否出现内存泄漏、服务中断、数据不一致等问题。
  • 性能基线建立:在版本迭代前后执行相同压测场景,对比性能变化,防止劣化。
实践提示: 在 Backstage 压测模板中,每个压测任务都应明确对应至少一个目的。例如“订单服务容量评估”对应目的 1,“数据库连接池瓶颈定位”对应目的 2。目的不清晰时,压测结果往往难以落地。

3.2 常见性能指标

性能压测的量化结果通过一系列指标呈现。以下四个指标是压测报告中最核心、最通用的度量标准,也是 Backstage 压测模板默认输出的关键数据。

指标 全称 定义 典型关注点
TPS Transactions Per Second 系统每秒处理的事务数。一个事务通常包含一个完整的业务操作(如一次下单流程)。 业务吞吐能力,直接反映系统处理业务请求的效率。
QPS Queries Per Second 系统每秒处理的查询或请求数。常用于接口层面,一个事务可能包含多个 QPS。 接口并发处理能力,常用于网关、API 层的性能评估。
响应时间 Response Time (RT) 从发送请求到收到完整响应所经过的时间,通常以毫秒(ms)为单位。 用户体验,重点关注 TP95、TP99 等百分位值。
错误率 Error Rate 压测过程中失败请求数占总请求数的百分比。 系统可靠性,通常要求错误率低于 0.1% 或 1%。
指标关系速记: TPS 衡量“业务完成量”,QPS 衡量“请求吞吐量”,响应时间衡量“快不快”,错误率衡量“稳不稳”。在 Backstage 模板中,这四个指标会以仪表盘形式实时展示,并自动计算通过/失败阈值。

3.3 压测类型

根据压测目的和负载模型的不同,性能压测通常分为三种基本类型。Backstage 压测模板内置了这三种类型的预设配置,用户只需选择场景即可快速启动。

3.3.1 负载测试 (Load Testing)

负载测试旨在模拟系统在预期正常负载下的行为,验证系统能否满足性能要求。负载通常从低到高逐步增加,直到达到目标 TPS 或并发数。

  • 目的:验证系统在典型业务量下的响应时间和错误率是否达标。
  • 负载模型:阶梯递增或匀速施压,持续 10~30 分钟。
  • 典型场景:日常业务高峰(如午间 12:00~13:00 的订单量)。

3.3.2 压力测试 (Stress Testing)

压力测试通过施加超出预期峰值的负载,观察系统在极限状态下的表现,找到系统的崩溃点或性能拐点。

  • 目的:确定系统的最大承载能力,以及过载后的恢复行为。
  • 负载模型:快速增加并发,直至系统出现错误或响应时间急剧恶化。
  • 典型场景:秒杀活动、突发流量冲击。

3.3.3 稳定性测试 (Stability / Endurance Testing)

稳定性测试让系统在一定负载下长时间运行(通常数小时至数天),检测是否存在资源泄漏、性能衰减或偶发故障。

  • 目的:验证系统在持续运行下的可靠性,发现内存泄漏、连接未释放等问题。
  • 负载模型:固定负载(通常为 70%~80% 的预期峰值),持续 4~24 小时。
  • 典型场景:7×24 小时在线服务、后台批处理任务。
常见误区: 很多团队只做负载测试,忽略压力测试和稳定性测试。在 Backstage 压测模板中,建议至少为每个核心服务配置“负载测试 + 稳定性测试”两个场景;对于有流量突增风险的服务,必须补充压力测试。

3.4 三种压测类型对比

下表从多个维度对比三种压测类型,帮助你在 Backstage 模板中选择合适的场景。

维度 负载测试 压力测试 稳定性测试
核心目标 验证性能达标 寻找极限与崩溃点 验证长期可靠性
负载强度 预期峰值以内 超出预期峰值 中等负载(70%~80%)
持续时间 10~30 分钟 5~15 分钟 4~24 小时
主要关注指标 TPS、响应时间、错误率 最大 TPS、崩溃点、恢复时间 内存趋势、GC 频率、连接数
Backstage 模板预设 load-test stress-test stability-test

3.5 压测类型与指标的关系图

下图展示了三种压测类型与核心指标之间的映射关系,以及它们在压测流程中的位置。

压测类型与指标关系图 压测类型与核心指标映射 负载测试 Load Testing 压力测试 Stress Testing 稳定性测试 Stability Testing 核心指标 TPS 事务/秒 QPS 请求/秒 响应时间 TP95 / TP99 错误率 Error Rate 负载测试关注所有指标是否达标;压力测试重点关注最大 TPS 和错误率拐点; 稳定性测试侧重响应时间趋势和错误率是否随时间劣化。

3.6 在 Backstage 模板中如何选择

当你通过 Backstage 压测模板创建新任务时,需要在配置文件中指定 testType 字段。以下是一个简化的 YAML 配置示例:

# backstage-press-test.yaml
apiVersion: backstage.io/v1beta1
kind: PerformanceTest
metadata:
  name: order-service-load
spec:
  target:
    host: https://order-api.example.com
    endpoints:
      - /api/v1/orders
  testType: load-test          # 可选: load-test, stress-test, stability-test
  duration: 15m
  rampUp: 3m
  targetTPS: 500
  thresholds:
    - metric: responseTime
      condition: p99 < 2000ms
    - metric: errorRate
      condition: < 0.1%
模板使用建议: 在 Backstage 中,建议为每个服务创建三个独立的压测任务,分别对应三种类型。通过模板的“场景标签”功能(tags: [load, stress, stability])进行分类管理,方便后续批量执行和报告聚合。