etcd v2.2.0-rc 基准测试

etcd v2.2.0-rc 的性能指标

物理机

GCE n1-highcpu-2 机器类型

  • 1x 专用本地 SSD 挂载在 /var/lib/etcd 下
  • 1 块专用慢速磁盘用于操作系统
  • 1.8 GB 内存
  • 2 个 CPU

etcd 集群

3 个 etcd 2.2.0-rc 成员,每个运行在一台单独的机器上。

详细版本:

etcd Version: 2.2.0-alpha.1+git
Git SHA: 59a5a7e
Go Version: go1.4.2
Go OS/Arch: linux/amd64

此外,我们使用 3 个 etcd 2.1.0 alpha 阶段的成员组成集群以获得基准性能。etcd 的提交头是c7146bd5,与我们在etcd 2.1 基准测试中使用的相同。

测试

启动另一台机器并使用 hey HTTP 基准测试工具 向每个 etcd 成员发送请求。请参阅 基准测试黑客指南 获取详细说明。

性能

读取单个键

键大小(字节)客户端数量目标 etcd 服务器读取 QPS90 百分位延迟(毫秒)
641仅领导者2804 (-5%)0.4 (+0%)
6464仅领导者17816 (+0%)5.7 (-6%)
64256仅领导者18667 (-6%)20.4 (+2%)
2561仅领导者2181 (-15%)0.5 (+25%)
25664仅领导者17435 (-7%)6.0 (+9%)
256256仅领导者18180 (-8%)21.3 (+3%)
6464所有服务器46965 (-4%)2.1 (+0%)
64256所有服务器55286 (-6%)7.4 (+6%)
25664所有服务器46603 (-6%)2.1 (+5%)
256256所有服务器55291 (-6%)7.3 (+4%)

写入单个键

键大小(字节)客户端数量目标 etcd 服务器写入 QPS90 百分位延迟(毫秒)
641仅领导者76 (+22%)19.4 (-15%)
6464仅领导者2461 (+45%)31.8 (-32%)
64256仅领导者4275 (+1%)69.6 (-10%)
2561仅领导者64 (+20%)16.7 (-30%)
25664仅领导者2385 (+30%)31.5 (-19%)
256256仅领导者4353 (-3%)74.0 (+9%)
6464所有服务器2005 (+81%)49.8 (-55%)
64256所有服务器4868 (+35%)81.5 (-40%)
25664所有服务器1925 (+72%)47.7 (-59%)
256256所有服务器4975 (+36%)70.3 (-36%)

性能变化说明

  • 在大多数情况下,读取 QPS 下降了 5~8%。原因是 etcd 记录了每个存储操作的指标。这些指标对于监控和调试非常重要,因此这是可以接受的。

  • 写入到领导者的 QPS 增加了 20~30%。这是因为我们将 Raft 主循环和条目应用循环解耦,从而避免了它们互相阻塞。

  • 写入到所有服务器的 QPS 增加了 30~80%,因为跟随者可以更早地接收到最新的提交索引,并更快地提交提案。


最后更新于 2025 年 6 月 3 日:递归地将 v3.6 的内容复制到 v3.7(a90b2a6)