4. 压测指标定义:QPS、延迟(P99/P999)、吞吐量、错误率、资源利用率

在多集群 etcd 压测中,指标定义是评估性能、发现瓶颈和验证调优效果的基石。错误的指标选择或解读会直接导致调优方向偏离。本章定义五个核心压测指标,并说明其计算方式、观测意义及在多集群场景下的特殊注意事项。

4.1 指标全景与分层

压测指标并非孤立存在,它们之间存在因果与约束关系。下图展示了五个指标在 etcd 请求生命周期中的位置与关联:

etcd 压测指标分层与关联图 客户端压测层(压测工具:benchmark / ghz / wrk) QPS(每秒请求数) · 延迟(P99 / P999) · 错误率 网络传输层(gRPC / HTTP/2 · 连接池 · 带宽) 吞吐量(MB/s) etcd 服务层(Raft · KV 引擎 · 磁盘 I/O) 资源利用率(CPU · 内存 · 磁盘 IOPS · 网络带宽) 内部延迟(Raft 提交 · 磁盘 fsync) 瓶颈反馈
指标分层原则:QPS、延迟和错误率是客户端直接感知的“外部指标”;吞吐量是网络传输层的“中间指标”;资源利用率是服务端的“内部指标”。调优时需从外部指标发现问题,向内部指标追溯根因。

4.2 核心指标详解

4.2.1 QPS(Queries Per Second)

定义:每秒成功完成的请求数量。在 etcd 语境中,通常分为读 QPS(Range)和写 QPS(Put / Txn)。

维度 说明 多集群注意事项
读 QPS 串行化读取,受限于 CPU 和内存缓存命中率 跨集群读取需考虑 follower 的线性一致性读开销(Raft 心跳同步)
写 QPS 受 Raft 提交延迟和磁盘 fsync 性能约束 多集群写入通常通过网关层分发,需额外考虑网络往返(RTT)
混合 QPS 读写比例对 QPS 上限影响显著(如 9:1 与 1:1 差异可达 3 倍) 不同集群的读写比例可能不同,需分别压测
压测实践:使用 etcdctl check perf 或开源工具 ghz 时,务必指定 --read-ratio 和 --write-ratio。例如:
ghz --insecure --proto ./etcdserver.proto --call etcdserverpb.KV.Put \
  -d '{"key":"dGVzdA==","value":"dmFsdWU="}' \
  --rps 5000 --concurrency 100 --total 100000 \
  --read-ratio=0.8 --write-ratio=0.2 \
  10.0.0.1:2379

4.2.2 延迟(P99 / P999)

定义:延迟是请求从发出到收到完整响应的时间间隔。P99 表示 99% 的请求延迟低于该值,P999 表示 99.9% 的请求延迟低于该值。

  • P50(中位数):反映典型体验,但掩盖尾部延迟问题。
  • P99:etcd 生产环境的核心关注指标,通常要求 < 10ms(读)和 < 20ms(写)。
  • P999:用于捕捉极端慢请求,通常由 Raft 选举、磁盘抖动或网络重传引发。
多集群陷阱:跨集群请求的 P99 延迟不能简单取平均。不同集群的网络延迟分布可能差异巨大(如跨 AZ 延迟 2ms vs 跨 Region 延迟 50ms)。建议按集群粒度分别统计 P99,再取最大值作为系统级 P99。

4.2.3 吞吐量(Throughput)

定义:单位时间内成功传输的数据量,通常以 MB/s 或请求体大小累计值衡量。在 etcd 中,吞吐量受限于:

  • 网络带宽:gRPC 消息体大小(默认 1.5 MiB 限制)
  • 磁盘 IOPS:写请求的 WAL 日志落盘速度
  • Raft 日志复制:follower 节点接收日志的速率
场景 典型吞吐量上限 瓶颈点
小 value(256B) 50-100 MB/s CPU 序列化 / 反序列化
中 value(4KB) 200-500 MB/s 网络带宽
大 value(1MB) 10-50 MB/s 磁盘 IOPS + 网络延迟

4.2.4 错误率(Error Rate)

定义:失败请求数占总请求数的百分比。etcd 常见错误类型:

  • 超时错误(DeadlineExceeded):gRPC 超时设置过短或服务端过载
  • 资源耗尽错误(ResourceExhausted):etcd 的 --max-request-bytes 或 --max-txn-ops 限制
  • 内部错误(Internal / Unavailable):Raft 选举、leader 切换、磁盘故障
  • 限流错误(TooManyRequests):etcd v3.5+ 内置的请求限流机制
可接受阈值:生产环境压测时,错误率应 < 0.1%(即 99.9% 成功率)。若错误率超过 1%,必须停止压测并排查根因,否则压测数据不可信。

4.2.5 资源利用率(Resource Utilization)

定义:服务端硬件资源的使用比例,是定位瓶颈的直接依据。

资源 关键指标 etcd 典型瓶颈阈值
CPU 用户态 + 内核态使用率 > 80% 时延迟开始劣化
内存 进程 RSS + 缓存命中率 内存不足导致频繁 GC 或 OOM
磁盘 IOPS WAL fsync 延迟(iostat await) await > 10ms 时写 QPS 受限
网络带宽 入站 / 出站流量 带宽利用率 > 70% 时丢包率上升

4.3 指标关联模型

五个指标之间存在典型的“跷跷板”关系,理解这些关系有助于快速定位瓶颈:

压测指标关联模型(跷跷板效应) QPS ↑ 延迟 ↑ 错误率 ↑ 资源利用率 ↑ 典型瓶颈演进路径 1. 低负载:QPS 线性增长,延迟稳定,错误率 ≈ 0 2. 拐点到达:资源利用率接近瓶颈,延迟开始抬升 3. 过载区:QPS 不再增长甚至下降,错误率急剧上升 4. 调优目标:在资源利用率 < 70% 时,最大化 QPS 并保持 P99 < 10ms

4.4 多集群场景下的指标聚合策略

当压测涉及多个 etcd 集群时,不能简单地将各集群指标相加或取平均。推荐以下聚合策略:

指标 聚合方式 理由
QPS 各集群 QPS 之和 总请求量是线性叠加的
P99 延迟 取各集群 P99 的最大值 最慢集群决定整体体验
错误率 总错误数 / 总请求数 全局视角的可用性度量
资源利用率 按集群分别报告,不聚合 各集群硬件配置可能不同,聚合会掩盖短板
推荐工具链:使用 Prometheus + Grafana 采集 etcd 内置指标(etcd_request_duration_seconds、etcd_disk_wal_fsync_duration_seconds),配合压测工具的输出,可以实时绘制 QPS-延迟-资源利用率的三维关联曲线。

4.5 本章小结

  • QPS 是压测的“油门”,决定系统负载水平。
  • 延迟(P99/P999) 是用户体验的“温度计”,尾部延迟比平均值更重要。
  • 吞吐量 是网络和磁盘的“流速计”,大 value 场景下尤其关键。
  • 错误率 是压测的“安全阀”,超过阈值应立即停止。
  • 资源利用率 是瓶颈定位的“地图”,CPU、磁盘 IOPS、网络带宽是 etcd 三大核心资源。