--- title: etcd v2.2.0-rc 基准测试 weight: 5625 description: etcd 2.2.0-rc 的性能指标 categories: [参考] upstream_link: "https://github.com/etcd-io/website/blob/824597935df6e95992ef61c07e3222f4f796ca6c/content/en/docs/v3.7/benchmarks/etcd-2-2-0-rc-benchmarks.md" aliases: [/etcd/benchmarks/etcd-2-2-0-rc-benchmarks/] --- ## 物理机 {#physical-machine} GCE n1-highcpu-2 机器类型 - 1 个专用本地 SSD,挂载于 /var/lib/etcd - 1 个专用慢速磁盘,用于操作系统 - 1.8 GB 内存 - 2 个 CPU ## etcd 集群 {#etcd-cluster} 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][c7146bd5],与 [etcd 2.1 基准测试][etcd-2.1-benchmark] 中所用版本相同。 ## 测试 {#testing} 引导另一台机器,并使用 [hey HTTP 压力测试工具][hey] 向每个 etcd 成员发送请求。请参阅 [基准测试黑客指南][hack-benchmark] 以获取详细操作说明。 ## 性能 {#performance} ### 读取单一键 {#reading-one-single-key} | 键大小(字节) | 客户端数量 | 目标 etcd 服务器 | 读取 QPS | 第 90 百分位延迟(毫秒) | |----------------|------------|------------------|----------|--------------------------| | 64 | 1 | 仅领导者 | 2804 (-5%) | 0.4 (+0%) | | 64 | 64 | 仅领导者 | 17816 (+0%) | 5.7 (-6%) | | 64 | 256 | 仅领导者 | 18667 (-6%) | 20.4 (+2%) | | 256 | 1 | 仅领导者 | 2181 (-15%) | 0.5 (+25%) | | 256 | 64 | 仅领导者 | 17435 (-7%) | 6.0 (+9%) | | 256 | 256 | 仅领导者 | 18180 (-8%) | 21.3 (+3%) | | 64 | 64 | 所有服务器 | 46965 (-4%) | 2.1 (+0%) | | 64 | 256 | 所有服务器 | 55286 (-6%) | 7.4 (+6%) | | 256 | 64 | 所有服务器 | 46603 (-6%) | 2.1 (+5%) | | 256 | 256 | 所有服务器 | 55291 (-6%) | 7.3 (+4%) | ### 编写一个键 {#writing-one-single-key} | 键大小(字节) | 客户端数量 | 目标 etcd 服务器 | 写入 QPS | 第 90 百分位延迟(毫秒) | |----------------|------------|------------------|----------|--------------------------| | 64 | 1 | 仅领导者 | 76(+22%) | 19.4(-15%) | | 64 | 64 | 仅领导者 | 2461(+45%) | 31.8(-32%) | | 64 | 256 | 仅领导者 | 4275(+1%) | 69.6(-10%) | | 256 | 1 | 仅领导者 | 64(+20%) | 16.7(-30%) | | 256 | 64 | 仅领导者 | 2385(+30%) | 31.5(-19%) | | 256 | 256 | 仅领导者 | 4353(-3%) | 74.0(+9%) | | 64 | 64 | 所有服务器 | 2005(+81%) | 49.8(-55%) | | 64 | 256 | 所有服务器 | 4868(+35%) | 81.5(-40%) | | 256 | 64 | 所有服务器 | 1925(+72%) | 47.7(-59%) | | 256 | 256 | 所有服务器 | 4975(+36%) | 70.3(-36%) | ### 性能变化说明 {#performance-changes-explanation} - 在大多数场景下,读取 QPS 下降了 5%~8%。原因是 etcd 会为每次存储操作记录存储指标。这些指标对监控和调试至关重要,因此该情况可接受。 - 写入 QPS 到领导者提升了 20%~30%。这是因为我们将 Raft 主循环与条目应用循环解耦,避免了两者相互阻塞。 - 所有服务器的写入 QPS 提升了 30% 至 80%,因为跟随者可更早接收到最新的提交索引,从而更快地提交提案。 [c7146bd5]: https://github.com/etcd-io/etcd/commits/c7146bd5f2c73716091262edc638401bb8229144 [etcd-2.1-benchmark]: /zh/docs/etcd/benchmarks/etcd-2-1-0-alpha-benchmarks/ [hack-benchmark]: https://github.com/etcd-io/etcd/tree/v2.3.8/hack/benchmark [hey]: https://github.com/rakyll/hey