3. 性能测试基础:吞吐量、延迟、并发、资源利用率核心指标
在数据库可靠性压测中,性能指标是衡量系统行为与瓶颈的“仪表盘”。四个核心指标——吞吐量、延迟、并发与资源利用率——构成了性能评估的基石。它们相互关联,任何单一指标的优化都可能引发其他指标的连锁变化。本节将逐一拆解其定义、度量方式及在压测中的典型表现。
3.1 吞吐量(Throughput)
吞吐量衡量系统在单位时间内成功处理的工作量。对于数据库而言,通常以 TPS(Transactions Per Second,每秒事务数) 或 QPS(Queries Per Second,每秒查询数) 表示。
| 指标 | 定义 | 适用场景 | 压测关注点 |
|---|---|---|---|
| TPS | 每秒完成的事务数(含提交/回滚) | OLTP 系统(订单、支付) | 事务完整性、锁竞争 |
| QPS | 每秒执行的查询数(含读写) | 读写混合、报表查询 | 索引效率、IO 吞吐 |
| RPS | 每秒处理的请求数(更通用) | API 网关、连接池 | 连接建立与释放开销 |
压测经验: 吞吐量并非越高越好。当系统接近饱和点时,吞吐量增长会趋于平缓甚至下降(因排队与上下文切换开销)。应关注“拐点吞吐量”——即延迟开始急剧恶化前的最大稳定吞吐。
3.2 延迟(Latency)
延迟指从请求发出到收到完整响应所经过的时间。在数据库压测中,延迟通常分为网络延迟、排队延迟与服务延迟。常用统计指标包括:
- 平均延迟(Avg Latency):容易受极端值影响,不推荐单独使用。
- 百分位延迟(P99 / P95 / P50):P99 表示 99% 的请求延迟低于该值,更能反映尾部体验。
- 最大延迟(Max Latency):通常由 GC、锁等待或 IO 抖动引起,是稳定性关键信号。
关键原则: 在变更窗口压测中,P99 延迟不应超过基线的 1.5 倍,且不能出现持续上升趋势(即“延迟发散”)。若 P99 随并发线性增长,说明系统已进入过载区。
3.3 并发(Concurrency)
并发指系统同时处理的活跃请求数。注意区分并发用户数(虚拟用户)与数据库活跃连接数。压测中,并发通常通过线程池或协程模拟。
| 概念 | 说明 | 压测控制方式 |
|---|---|---|
| 并发用户数 | 压测工具模拟的虚拟用户数量 | JMeter 线程组、Sysbench 线程数 |
| 活跃连接数 | 数据库端实际处于事务中的连接 | 监控 SHOW PROCESSLIST 或连接池指标 |
| 并发度 | 活跃连接数 / 最大连接数 | 建议保持在 60%~80% 以下 |
常见误区: 并发数越高,吞吐量不一定越高。当并发超过数据库连接池或 CPU 核数的处理能力时,大量请求会进入排队状态,导致延迟飙升、吞吐下降(即“并发悬崖”)。压测时应采用“阶梯并发”模式,逐步增加并发以找到最佳并发点。
3.4 资源利用率(Resource Utilization)
资源利用率反映系统各组件的负载程度。数据库压测中需重点监控以下资源:
- CPU:用户态(SQL 解析、计算)、系统态(IO 等待、锁)、空闲。若 CPU 空闲但 IO 等待高,说明瓶颈在磁盘。
- 内存:Buffer Pool 命中率、排序区使用、连接内存。命中率低于 95% 时需关注。
- 磁盘 IO:IOPS、吞吐量、平均 IO 延迟(await)、队列长度(avgqu-sz)。
- 网络:带宽使用率、TCP 重传率、连接数。
利用率黄金法则: 对于 OLTP 系统,建议 CPU 利用率 ≤ 70%,磁盘利用率 ≤ 60%,内存 Buffer Pool 命中率 ≥ 99%。超过此阈值,系统抗风险能力显著下降。
3.5 四指标关联模型
四个指标并非孤立存在,它们遵循 Little's Law 的变体关系:并发 = 吞吐量 × 平均延迟。在压测中,这一关系可用于验证数据一致性:
# 压测中验证指标一致性
# 假设:并发数 = 100,吞吐量 = 500 TPS
# 则理论平均延迟 = 并发 / 吞吐量 = 100 / 500 = 0.2 秒 = 200 ms
# 若实际平均延迟远高于 200 ms,说明存在排队或阻塞
下图展示了四个指标在典型压测过程中的动态关系:
3.6 压测中的指标观察策略
在变更窗口压测中,建议按以下步骤观察指标:
- 基线采集:在低并发(如 10 并发)下运行 5 分钟,记录吞吐量、P99 延迟、CPU 利用率。
- 阶梯加压:每 2 分钟增加 20 并发,观察各指标变化趋势。
- 拐点识别:当吞吐量不再随并发增加而增长,或 P99 延迟出现非线性上升时,标记为“饱和点”。
- 资源瓶颈定位:若 CPU 利用率未达 70% 但延迟已恶化,检查 IO 等待或锁竞争。
- 稳定性验证:在 80% 饱和点并发下持续运行 30 分钟,观察指标是否发散。
变更窗口压测验收标准(示例):
✅ 吞吐量 ≥ 基线值的 90%
✅ P99 延迟 ≤ 基线值的 150%
✅ CPU 利用率 ≤ 75%,IO 等待 ≤ 10%
✅ 无内存泄漏(内存占用稳定)
✅ 无连接池耗尽(活跃连接数 ≤ 最大连接数的 80%)
✅ 吞吐量 ≥ 基线值的 90%
✅ P99 延迟 ≤ 基线值的 150%
✅ CPU 利用率 ≤ 75%,IO 等待 ≤ 10%
✅ 无内存泄漏(内存占用稳定)
✅ 无连接池耗尽(活跃连接数 ≤ 最大连接数的 80%)
3.7 常见指标陷阱与避坑
| 陷阱 | 表现 | 正确做法 |
|---|---|---|
| 只看平均延迟 | 平均延迟正常,但 P99 已超时 | 同时监控 P50、P95、P99 |
| 忽略预热期 | 前 1 分钟指标偏低,误判为性能差 | 预热 3~5 分钟后再采集数据 |
| 并发数等于连接数 | 压测工具并发高,但数据库连接池小 | 监控数据库端活跃连接数 |
| 资源利用率 100% 才算满 | CPU 100% 时延迟已不可接受 | 以延迟拐点作为容量上限 |