Тестування продуктивності etcd v2.2.0-rc

Вимірювання продуктивності для etcd v2.2.0-rc

Фізична машина

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

  • 1x виділений локальний SSD, змонтований у /var/lib/etcd
  • 1x виділений повільний диск для ОС
  • 1.8 ГБ памʼяті
  • 2x CPU

Кластер etcd

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-stage для формування кластера для отримання базової продуктивності. Коміт head etcd знаходиться на c7146bd5, що є тим самим, який ми використовували в тестуванні продуктивності etcd 2.1.

Тестування

Запустіть іншу машину та використовуйте hey HTTP benchmark tool для надсилання запитів до кожного учасника etcd. Перевірте керівництво з тестування продуктивності для детальних інструкцій.

Продуктивність

читання одного ключа

розмір ключа в байтахкількість клієнтівцільовий сервер etcdQPS читання90-й процентиль затримки (мс)
641тільки лідер2804 (-5%)0.4 (+0%)
6464тільки лідер17816 (+0%)5.7 (-6%)
64256тільки лідер18667 (-6%)20.4 (+2%)
2561тільки лідер2181 (-15%)0.5 (+25%)
25664тільки лідер17435 (-7%)6.0 (+9%)
256256тільки лідер18180 (-8%)21.3 (+3%)
6464всі сервери46965 (-4%)2.1 (+0%)
64256всі сервери55286 (-6%)7.4 (+6%)
25664всі сервери46603 (-6%)2.1 (+5%)
256256всі сервери55291 (-6%)7.3 (+4%)

запис одного ключа

розмір ключа в байтахкількість клієнтівцільовий сервер etcdQPS запису90-й процентиль затримки (мс)
641тільки лідер76 (+22%)19.4 (-15%)
6464тільки лідер2461 (+45%)31.8 (-32%)
64256тільки лідер4275 (+1%)69.6 (-10%)
2561тільки лідер64 (+20%)16.7 (-30%)
25664тільки лідер2385 (+30%)31.5 (-19%)
256256тільки лідер4353 (-3%)74.0 (+9%)
6464всі сервери2005 (+81%)49.8 (-55%)
64256всі сервери4868 (+35%)81.5 (-40%)
25664всі сервери1925 (+72%)47.7 (-59%)
256256всі сервери4975 (+36%)70.3 (-36%)

пояснення змін продуктивності

  • QPS читання в більшості сценаріїв зменшився на 5~8%. Причина в тому, що etcd записує метрики для кожної операції зберігання. Метрики важливі для моніторингу та налагодження, тому це прийнятно.

  • QPS запису до лідера збільшився на 20~30%. Це тому, що ми розділили основний цикл raft і цикл застосування записів, що дозволяє уникнути їх блокування один одного.

  • QPS запису до всіх серверів збільшився на 30~80%, оскільки послідовник може отримати останній індекс коміту раніше і швидше застосовувати пропозиції.