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 压测类型与指标的关系图
下图展示了三种压测类型与核心指标之间的映射关系,以及它们在压测流程中的位置。
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])进行分类管理,方便后续批量执行和报告聚合。