Експрес-огляд продуктивності PostgreSQL 10.5 в новітніх хмарних сервісах Яндекс.Хмари

Буквально днями Яндекс відкрив доступ для beta-користувачів до свого нового сервісу — Яндекс.Хмара. Так вийшло, що ця подія співпала з необхідністю вибору хмарної платформи для одного з наших внутрішніх проектів і я вирішив протестувати продуктивність рішень Яндекса.

Для тесту я взяв PostgreSQL і старий добрий pgbench. Вибір СУБД упав тому що було цікаво перевірити та порівняти продуктивність не тільки віртуальних машин, то і managed database сервісів.

Disclaimer: автор не є ні професійним адміністратором, ні DBA, ні фахівцем по налаштуванню хмарних рішень. Тестування проводилося виключно в особистих цілях і не претендує на об’єктивність, тому прошу сприймати статтю «as is». Всередині не буде якогось глибокого аналізу, але буде експрес-порівняння з Selectel VPC (на різних дисках) і різними конфігураціями AWS EC2/RDS щодо продуктивності і вартості рішень. Можливо, це заощадить комусь трохи часу.

Подробиці Yandex.Cloud vs Selectel VPC vs AWS під катом.

Структура сервісів Яндекс.Хмари

Структура ресурсів Яндекс.Хмари звичайна для такого роду сервісів:

Квоти ресурсів (глобальні)
Каталог (проект)

— Compute Cloud (віртуальні машини і диски)
— Managed Databases (кластери баз даних, можна запускати бази Clickhouse, MongoDB і PostgreSQL)
— Object Storage (хмарне сховище)
— Virtual Private Cloud (хмарні мережі)
— API

Детально описувати інтерфейс не бачу сенсу, тим більше, що документація знаходиться у вільному доступі і з неї багато і так зрозуміло.

Порівнювані конфігурації

Для всіх віртуальних инстансов в тесті були виділені наступні ресурси:

vCPU: 8 cores
RAM: 32 Gb
Disk: SSD (конкретний клас — див. досліджувані инстансы).
OS: CentOS 7 minimal

Для managed database-сервісів запитувалася максимально близька конфігурація (у Яндекса і AWS як раз є конфігурації з 8CPU/32RAM).

Читайте також  В одному з цехів Автовазу знайшли ферму для майнінгу

Протестована версія Postgres — 10.5. На виртуалки він ставився з пакету postgresql10-server, а на managed-кластерах вибиралася ця версія зі списку.

Методика тестування

 

  1. На чисту ОС встановлювалися пакети postgresql10-server і postgresql10
  2. Инициализировалась БД для бенчмарка з параметрами: pgbench -i -s 100
  3. Три рази прогонялся бенчмарк з параметрами: pgbench -з 10 -T 60
  4. Утиліта pgbench запускалася на тій же віртуальній машині, де встановлена СУБД, а для managed-кластерів — на віртуальній машині в тому ж хмарі.
  5. У таблицю результатів заносився кращий результат з трьох.

 

Результати тестування

Всі результати експрес-тесту однією таблицею (графіки нижче):

Resource TPS Price

AWS EC2 m5.2xlarge 2822 343
AWS EC2 m5d.2xlarge 2752 403
AWS EC2 t3.2xlarge 2636 290
AWS EC2 t2.2xlarge 2259 320
AWS EC2 m4.2xlarge 2187 358
Selectel VPC (fast SSD) 1524 186
Yandex Compute Cloud Instance 1309 155
Yandex Cloud Managed Database 1226 234
AWS RDS db.m4.2xlarge (3000 IOPS) 1200 1007
AWS RDS db.t2.2xlarge (3000 IOPS) 1127 862
AWS RDS db.t2.2xlarge (1000 IOPS) 970 625
AWS RDS db.m4.2xlarge (1000 IOPS) 885 769
Selectel VPC (universal SSD) 247 164

У колонці Price представлена розрахункова ціна вартості досліджуваного рішення в місяць в USD, включаючи сховище на 100Gb. Для Amazon RDS, який тарифікується по годинах, вартість години множилася на 720. Ціни для розрахунку взяті з наступних джерел:

— для Yandex Cloud Managed Database
— для Yandex Compute Cloud Instance
— для Selectel VPC Instance

Результати тестування у вигляді графіка:

Висновки

Висновки, загалом-то, досить очевидні: universal SSD у Селектела для цілей розміщення СУБД краще не брати 🙂

Ну а якщо серйозно, то мені було цікаво порівняти в першу чергу Selectel і Yandex. Як виявилося, обидва рішення йдуть практично ніздря в ніздрю як по продуктивності, так і по вартості. Причому вартість приємно здивувала: ціни на досліджувані конфігурації виявилися цілком доступними.

Читайте також  Qt: малювання за мотивами векторної графіки

Використовувати аналогічну за параметрами конфігурацію в хмарі AWS очікувано дорожче (хоча я очікував більшої різниці в ціні), але от по продуктивності наздогнати AWS EC2 не зміг жоден з російських провайдерів. Виняток — не зрозумілий мені RDS, яким не допомагає навіть додавання provisioned IOPS — працює він все одно повільно, а варто при цьому дуже і дуже дорого.

Ще пару слів про Яндекс: взагалі, появи такого сервісу я чекав від них давно, очевидно було, що це лише питання часу. Поки ще видно, що він недосконалий (сподіваюся, це відноситься тільки до веб-морді, а не до інфраструктури в цілому), тому як всередині ще багато багів і глюків. Довелося щільно поспілкуватися з тех. підтримкою, щоб зрозуміти, що це баг чи це я щось не розумію. Але, я впевнений, все це швидко відлагодять і на російському ринку IaaS з’явиться ще одна гідна альтернатива.

Степан Лютий

Обожнюю технології в сучасному світі. Хоча частенько і замислююся над тим, як далеко вони нас заведуть. Не те, щоб я прям і знаюся на ядрах, пікселях, коллайдерах і інших парсеках. Просто приходжу в захват від того, що може в творчому пориві вигадати людський розум.

You may also like...

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *