# Тестирование производительности etcd v2.2.0

> Показатели производительности etcd v2.2.0

---

Индекс LLMS: [llms.txt](/ru/llms.txt)

---

## Физические машины {#physical-machines}

Тип машины GCE n1-highcpu-2

- 1x выделенный локальный SSD, используемый как каталог данных etcd
- 1x выделенный медленный диск для ОС
- 1.8 GB памяти
- 2x 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 и примените [инструмент HTTP-тестирования `hey`](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 чтения | средняя задержка 90-го процентиля (ms) | стандартное отклонение задержки |
|-------------------|-------------------|--------------------|------------------|-----------------|--------------------------------------|----------------|
| 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 записи | средняя задержка 90-го процентиля (ms) | стандартное отклонение задержки |
|-------------------|-------------------|--------------------|------------------|-----------------|--------------------------------------|----------------|
| 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 записи на лидерах кластера немного увеличился. Основной цикл и циклы применения записей были разделены в логике Raft etcd, что устранило несколько блокировок между ними.

- QPS записи на всех участниках значительно увеличился, поскольку последователи теперь раньше получают последний зафиксированный индекс и быстрее фиксируют предложения.
