Экспресс-обзор производительности PostgreSQL 10.5 в новейших облачных сервисах Яндекс.Облака

в 5:20, , рубрики: AWS, devops, Pgbench, postgresql, RDS, облачная инфраструктура, Облачные вычисления, облачные сервисы, облачные услуги, яндекс.облако

Буквально на днях Яндекс открыл доступ для 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 -c 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 Cloud Compute 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 Cloud Compute Instance
для Selectel VPC Instance

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

image

Выводы

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

Ну а если серьёзно, то мне было интересно сравнить в первую очередь Selectel и Yandex. Как оказалось, оба решения идут практически ноздря-в-ноздрю как по производительности, так и по стоимости. Причём стоимость приятно удивила: цены на тестируемые конфигурации оказались вполне доступными.

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

Еще пару слов про Яндекс: вообще, появления такого сервиса я ждал от них давно, очевидно было, что это лишь вопрос времени. Пока еще видно, что он сыроват (надеюсь, это относится только к веб-морде, а не к инфраструктуре в целом), потому как внутри ещё много багов и глюков. Пришлось плотно пообщаться с тех. поддержкой, чтобы понять, это баг или это я что-то не понимаю. Но, я уверен, всё это быстро отладят и на российском рынке IaaS появится еще одна достойная альтернатива.

Автор: Denis I. Lukyanov

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js