Тестирование производительности etcd v2.2.0
Физические машины
Тип машины GCE n1-highcpu-2
- 1x выделенный локальный SSD, используемый как каталог данных etcd
- 1x выделенный медленный диск для ОС
- 1.8 GB памяти
- 2x CPU
Кластер etcd
3 участника etcd 2.2.0, каждый работает на отдельной машине.
Точные версии:
Тестирование
Запустите ещё одну машину вне кластера etcd и примените инструмент HTTP-тестирования hey
с патчем повторного использования соединений для отправки запросов каждому участнику кластера etcd. Патч и шаги для воспроизведения процедуры приведены в инструкции по тестированию
.
Производительность вычислена по результатам 100 раундов тестирования.
Производительность
Производительность чтения одного ключа
| размер ключа в байтах | количество клиентов | целевой сервер 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 |
Производительность записи одного ключа
| размер ключа в байтах | количество клиентов | целевой сервер 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 |
Изменения производительности
Поскольку etcd теперь записывает метрики для каждого вызова API, в большинстве сценариев QPS чтения немного снизился. Это минимальное влияние на производительность признано разумной платой за широкий набор данных для мониторинга и отладки.
QPS записи на лидерах кластера немного увеличился. Основной цикл и циклы применения записей были разделены в логике Raft etcd, что устранило несколько блокировок между ними.
QPS записи на всех участниках значительно увеличился, поскольку последователи теперь раньше получают последний зафиксированный индекс и быстрее фиксируют предложения.