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

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

---

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

---

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

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

- 1x выделенный локальный SSD, подключённый в /var/lib/etcd
- 1x выделенный медленный диск для ОС
- 1.8 GB памяти
- 2x 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}

Запустите ещё одну машину и с помощью [инструмента HTTP-тестирования hey][hey] отправляйте запросы каждому участнику etcd. Подробные инструкции приведены в [руководстве по разработке тестов производительности][hack-benchmark].

## Производительность {#performance}

### чтение одного ключа {#reading-one-single-key}

| размер ключа в байтах | количество клиентов | целевой сервер etcd | QPS чтения | задержка 90-го процентиля (ms) |
|-------------------|-------------------|--------------------|----------|---------------|
| 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-го процентиля (ms) |
|-------------------|-------------------|--------------------|-----------|---------------|
| 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]: /ru/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
