4. 网络带宽基础:带宽单位换算与理论吞吐上限公式
在 etcd 压测中,网络带宽是决定吞吐上限的首要物理约束。无论 CPU 多快、磁盘多强,一旦消息大小与并发量乘积超过链路容量,延迟就会急剧上升、吞吐进入平台期。本节从单位换算出发,推导理论吞吐上限公式,为后续参数平衡建立量化基础。
4.1 带宽单位:比特与字节的换算陷阱
网络带宽的标称单位是 bps(bits per second,比特/秒),而 etcd 消息大小通常用 字节(Byte) 表示。两者换算关系如下:
| 单位 | 全称 | 换算关系 | 常见场景 |
|---|---|---|---|
| 1 bps | 1 bit/s | — | 网络接口卡标称 |
| 1 Bps | 1 Byte/s | 1 Bps = 8 bps | 应用层数据量 |
| 1 Kbps | 1,000 bps | 1 Kbps = 125 Bps | 低带宽链路 |
| 1 Mbps | 1,000,000 bps | 1 Mbps ≈ 125 KBps | 千兆以太网 |
| 1 Gbps | 1,000,000,000 bps | 1 Gbps ≈ 125 MBps | 数据中心内网 |
常见误区:etcd 压测中,很多人将 1 Gbps 网卡直接当作 1000 MBps 计算,实际只有约 125 MBps。若消息大小为 1 MB,理论最大吞吐仅为 125 QPS,而非 1000 QPS。这个 8 倍换算错误是压测结果与预期偏差的首要原因。
4.2 理论吞吐上限公式
在理想网络条件下(无丢包、无拥塞、无协议开销),单条 TCP 连接的理论吞吐上限由以下公式决定:
Throughput (QPS) = Bandwidth (bps) / MessageSize (bits)
或更常用的字节形式:
Throughput (QPS) = (Bandwidth (Bps) × 8) / (MessageSize (bytes) × 8)
= Bandwidth (Bps) / MessageSize (bytes)
由于分子分母的 8 可以约去,实际计算时直接使用字节单位更简洁:
Throughput (QPS) = Bandwidth (bytes/s) / MessageSize (bytes)
例如:
- 1 Gbps 链路(125 MBps),消息大小 1 KB:
Throughput = 125 × 10⁶ / 1 × 10³ = 125,000 QPS - 1 Gbps 链路,消息大小 1 MB:
Throughput = 125 × 10⁶ / 1 × 10⁶ = 125 QPS - 10 Gbps 链路(1250 MBps),消息大小 64 KB:
Throughput = 1250 × 10⁶ / 64 × 10³ ≈ 19,531 QPS
核心洞察:消息大小每增大 10 倍,理论吞吐上限就下降 10 倍。在 etcd 压测中,消息大小是比带宽更敏感的杠杆——调整消息大小对吞吐的影响与调整带宽等效,但成本为零。
4.3 带宽-消息大小关系图
下图展示了不同带宽下,消息大小与理论吞吐上限的对数关系。横轴为消息大小(字节),纵轴为吞吐(QPS),三条曲线分别对应 1 Gbps、10 Gbps、40 Gbps 链路。
4.4 实际压测中的带宽损耗因素
理论公式假设 100% 链路利用率,但实际 etcd 压测中,以下因素会降低有效吞吐:
| 损耗因素 | 典型影响 | 说明 |
|---|---|---|
| TCP/IP 协议头 | 2% - 5% | 每个数据包额外 40-60 字节开销 |
| etcd gRPC 帧头 | 1% - 3% | HTTP/2 帧、gRPC 元数据 |
| Raft 日志复制 | 10% - 30% | Leader 需将请求广播至多数节点 |
| TCP 拥塞控制 | 5% - 20% | 高延迟或丢包时窗口缩减 |
| 序列化/反序列化 | 3% - 8% | protobuf 编解码 CPU 开销 |
压测经验法则:在 1 Gbps 内网、消息大小 1 KB 时,理论上限 125,000 QPS,实际 etcd 压测通常稳定在 70,000 - 90,000 QPS。若低于 50,000 QPS,说明瓶颈不在带宽,而在 CPU 或磁盘 I/O。
4.5 带宽与消息大小的平衡决策矩阵
根据上述公式和损耗因素,可以构建一个快速决策矩阵,帮助判断压测场景的瓶颈类型:
| 消息大小 | 1 Gbps 理论 QPS | 实际预期 QPS | 典型瓶颈 |
|---|---|---|---|
| 256 B | 488,281 | 290,000 - 390,000 | CPU / 网卡中断 |
| 1 KB | 125,000 | 75,000 - 100,000 | CPU / 内存带宽 |
| 4 KB | 31,250 | 18,000 - 25,000 | CPU / 磁盘 I/O |
| 16 KB | 7,812 | 4,500 - 6,200 | 磁盘 I/O / 网络 |
| 64 KB | 1,953 | 1,100 - 1,500 | 网络带宽 |
| 256 KB | 488 | 290 - 390 | 网络带宽 |
| 1 MB | 125 | 75 - 100 | 网络带宽 |
关键结论:当消息大小 ≤ 16 KB 时,带宽通常不是首要瓶颈;当消息大小 ≥ 64 KB 时,带宽成为硬约束。在 etcd 压测沙盘中,先根据消息大小判断瓶颈域,再决定调优方向——小消息调 CPU/磁盘,大消息调带宽/压缩。