# etcd v2.2.0 基准测试

> etcd 2.2.0 的性能指标

---

LLMS 索引： [llms.txt](/zh/llms.txt)

---

## 物理机 {#physical-machines}

GCE n1-highcpu-2 机器类型

- 1 块专用本地 SSD，挂载为 etcd 数据目录
- 1 块专用慢速磁盘，用于操作系统
- 1.8 GB 内存
- 2 个 CPU

## etcd 集群 {#etcd-cluster}

3 etcd 2.2.0 成员，每个成员运行在单台机器上。

详细版本：

```
etcd Version: 2.2.0
Git SHA: e4561dd
Go Version: go1.5
Go OS/Arch: linux/amd64
```

## 测试 {#testing}

在 etcd 集群外部引导另一台机器，并运行 [`hey` HTTP 基准测试工具](https://github.com/rakyll/hey)（含连接复用补丁），向每个 etcd 集群成员发送请求。请参阅 [基准测试说明](https://github.com/etcd-io/etcd/tree/v2.3.8/hack/benchmark) 获取补丁及复现我们操作步骤的详细信息。

性能通过 100 次基准测试结果计算得出。

## 性能 {#performance}

### 单键读取性能 {#single-key-read-performance}

| 键大小（字节） | 客户端数量 | 目标 etcd 服务器 | 平均读取 QPS | 读取 QPS 标准差 | 平均 90th 百分位延迟（毫秒） | 延迟标准差 |
|----------------|------------|------------------|--------------|----------------|-------------------------------|------------|
| 64             | 1          | 仅领导者       | 2303         | 200            | 0.49                          | 0.06       |
| 64             | 64         | 仅领导者       | 15048        | 685            | 7.60                          | 0.46       |
| 64             | 256        | 仅领导者       | 14508        | 434            | 29.76                         | 1.05       |
| 256            | 1          | 仅领导者       | 2162         | 214            | 0.52                          | 0.06       |
| 256            | 64         | 仅领导者       | 14789        | 792            | 7.69                          | 0.48       |
| 256            | 256        | 仅领导者       | 14424        | 512            | 29.92                         | 1.42       |
| 64             | 64         | 所有服务器     | 45752        | 2048           | 2.47                          | 0.14       |
| 64             | 256        | 所有服务器     | 46592        | 1273           | 10.14                         | 0.59       |
| 256            | 64         | 所有服务器     | 45332        | 1847           | 2.48                          | 0.12       |
| 256            | 256        | 所有服务器     | 46485        | 1340           | 10.18                         | 0.74       |

### 单键写入性能 {#single-key-write-performance}

| 键大小（字节） | 客户端数量 | 目标 etcd 服务器 | 平均写入 QPS | 写入 QPS 标准差 | 平均 90th 百分位延迟（毫秒） | 延迟标准差 |
|----------------|------------|------------------|--------------|----------------|-------------------------------|------------|
| 64             | 1          | 仅领导者       | 55           | 4              | 24.51                         | 13.26      |
| 64             | 64         | 仅领导者       | 2139         | 125            | 35.23                         | 3.40       |
| 64             | 256        | 仅领导者       | 4581         | 581            | 70.53                         | 10.22      |
| 256            | 1          | 仅领导者       | 56           | 4              | 22.37                         | 4.33       |
| 256            | 64         | 仅领导者       | 2052         | 151            | 36.83                         | 4.20       |
| 256            | 256        | 仅领导者       | 4442         | 560            | 71.59                         | 10.03      |
| 64             | 64         | 所有服务器     | 1625         | 85             | 58.51                         | 5.14       |
| 64             | 256        | 所有服务器     | 4461         | 298            | 89.47                         | 36.48      |
| 256            | 64         | 所有服务器     | 1599         | 94             | 60.11                         | 6.43       |
| 256            | 256        | 所有服务器     | 4315         | 193            | 88.98                         | 7.01       |

## 性能变化 {#performance-changes}

- 由于 etcd 现在会记录每个 API 调用的指标，大多数场景下读取 QPS 性能似乎出现轻微下降。这种极小的性能影响被认为是对所返回监控与调试信息广度的合理投入。

- 写入 QPS 到集群领导者似乎略有增加。这是因为 etcd Raft 逻辑中主循环与条目应用循环已解耦，消除了两者之间的多个阻塞点。

- 写入 QPS 向所有成员显著增加，因为跟随者现在能更早接收到最新的提交索引，从而更快地提交提案。
