При поиске информации о том, какой тип экземпляра использовать, ответом обычно является «это зависит». В этой статье приводятся типы экземпляров как с общими данными о типах EC2, так и с углубленным анализом производительности и выбора KeyDB для различных типов.
В центре внимания этой статьи будет использование KeyDB в качестве базы данных в памяти. В будущем появятся статьи об использовании KeyDB с хранилищем FLASH, а также о некоторых функциях KeyDB-Pro, таких как постоянство FLASH и расширенные запросы, в которых можно использовать преимущества гораздо большего количества ядер при интенсивной нагрузке (O (n)). операции, такие как KEYS). Когда будут доступны AWS Graviton2, мы также опубликуем эти результаты.
Давайте начнем с простого разбора использования экземпляров EC2, чтобы дать вам общее представление, прежде чем углубляться в анализ.
Что касается базы данных в памяти, первый вопрос заключается в том, какие типы будут оптимизировать стоимость, поскольку память (ОЗУ) часто является главной оговоркой. На первый взгляд, вы видите, что экземпляры x1 имеют лучшую цену наряду с экземплярами r5 и t. Однако переход на самый дешевый тип может быть не лучшим или правильным выбором для вас. Другие факторы, влияющие на принятие решения, — это емкость и производительность, которые вы ищете. Обратите внимание, что все расходы, указанные в этой статье, относятся к экземплярам по требованию.
Производительность обычно является важным фактором для предотвращения задержек при большой загрузке. KeyDB — это быстрая многопоточная база данных, которая может масштабироваться по вертикали, а затем по горизонтали. На приведенной ниже диаграмме выбрано несколько типов экземпляров, отображающих первый (с наименьшей стоимостью) экземпляр, который насыщен при максимальной производительности тестом Memtier . Можно видеть, что экземпляры C5, R5 и M5 способны добиться максимальной производительности из набора. Эти экземпляры имеют более быстрые процессоры и способны получать 1 миллион операций в секунду каждый.
Как вы можете видеть, есть плюсы и минусы каждого типа экземпляра, в зависимости от того, что вы ищете. Чтобы лучше понять каждый из них, мы рассмотрим некоторые дополнительные данные, чтобы сделать обобщения для каждого типа, описанного далее в этом отчете.
Вам также могут понравиться:
KeyDB и Дао Unikernel .
Диаграммы ниже показывают многие из этих случаев. Он сравнивает доступную память (ГБ) каждого экземпляра, тестируемые операции в секунду, цену / ГБ оперативной памяти и стоимость, нормированную для 1000 мс / сек, как сравнение стоимости за производительность. Эти диаграммы могут значительно облегчить выбор и уточнение наилучшего экземпляра для вашего варианта использования.
Обратите внимание, что экземпляры t2 и t3 затенены по-разному, потому что они являются пакетными экземплярами, а числа представляют пиковую нагрузку, а не постоянную нагрузку. Если кредиты ЦП израсходованы, экземпляры могут резко снизиться. Таким образом, понимание вашего использования во время выбора имеет решающее значение.
Поскольку KeyDB является многопоточным, большинство наших пользователей, как правило, используют не более одного экземпляра (за исключением высокой доступности). Это уменьшает сложность настройки для тех, кто не хочет кластеризоваться.
Первая тенденция, которую вы можете заметить, заключается в том, что производительность машины становится выше .4xlarge. Таким образом, если производительность становится узким местом для вашего приложения, вы будете использовать этот размер компьютера или больше в зависимости от того, сколько памяти вам требуется для вашей базы данных. Это гарантирует, что вы сначала масштабируете экземпляр по вертикали. Перед кластеризацией вы также можете создать экземпляр read-replica или active-replica для обработки некоторого трафика и обеспечения высокой доступности.
Для KeyDB существуют различные преимущества и недостатки каждого типа экземпляра в зависимости от вашей настройки / варианта использования. Мы наметим преимущества, поскольку они касаются KeyDB. Подробнее о типах вы можете прочитать здесь. Надеюсь, это резюме поможет уточнить решение.
Экземпляры M5 отлично подходят для большинства сценариев. Они оснащены процессором Intel Xeon® Platinum 8175 с тактовой частотой 3,1 ГГц, который позволяет KeyDB получать более 1 миллиона операций в секунду. Память доступна до 384 ГБ. Если вы ищете производительность и у вас нет требований к памяти выше, чем у экземпляров r5, это хороший путь.
Экземпляры R5 предлагают наилучшее сочетание производительности и доступной памяти. Память с экземплярами r5 является одной из самых дешевых на ГБ, и имеет тот же процессор, что и m5, обеспечивая более 1 миллиона операций в секунду. Для больших наборов данных, требующих высокой производительности, экземпляры r5 являются одним из лучших вариантов.
В C5-оптимизированных экземплярах используется масштабируемый процессор Intel Xeon с тактовой частотой 3,5 ГГц, который работает очень быстро. Тем не менее, производительность схожа с процессорами m5 / r5, получая чуть более 1 миллиона операций в секунду. Для повышения производительности экземпляры c5 работают с достаточно экономичными операциями в секунду за то, что вы получаете. Однако, если вы каким-либо образом ограничены памятью, экземпляры c5 являются самыми дорогими, когда речь идет о $ / GB. Большинство вариантов использования не принесут пользы с экземплярами c5 по сравнению с m5 / r5.
Экземпляры T2 и T3 являются отличными потенциальными вариантами для небольших флуктуирующих вариантов использования. Экземпляры t3 действительно получают лучшую производительность, чем экземпляры t2 в нашем тестировании, поскольку процессоры были немного быстрее. Главное, на что следует обратить внимание в случаях t2 и t3, это то, что они являются пакетными. Это означает, что они могут отлично работать на коротких очередях, но не ожидайте, что производительность будет постоянно. У вас есть кредиты ЦП, которые вы используете, и если вы перейдете, ваш ЦП будет сокращен, что может создать отрицательный эффект высокой задержки для ваших пользователей. Некоторые экземпляры могут быть снижены до 5% емкости, поэтому важно понять, как вы используете, чтобы убедиться, что они подходят. Чтобы узнать статистику и описания, смотрите этот документ.
Экземпляры A1 — это один из более доступных вариантов Amazon, использующий процессоры AWS Graviton. Эти процессоры лучше подходят для небольших баз данных, которые работают при постоянной нагрузке, в отличие от экземпляров с длительной стабильностью t3 / t2. Экземпляры A1 обеспечивают самую низкую цену, когда речь идет об операциях в секунду (объем обработанных операций на каждый потраченный доллар); однако стоимость памяти в ГБ относительно высока, а процессор с частотой 2,3 ГГц не получает такой же высокой скорости операций / сек, как другие типы экземпляров. Для случаев, когда уже используются приложения для рук и рабочие нагрузки, KeyDB on Arm отлично подходит и хорошо работает с ним.
Экземпляры X1 имеют самую низкую стоимость на ГБ памяти, однако процессор Intel Xeon E7 8880 v3 с частотой 2,3 ГГц обойдется со скоростью 620 000 копий / сек, поэтому он не достигает такого же высокого уровня производительности, как экземпляры m5 / r5. Однако для случаев, когда требуется много встроенной памяти, которые не близки к пределам производительности экземпляра, семейство X1 может быть правильным выбором для вас.
Экземпляры, оптимизированные для хранения, такие как семейство i3, отлично подходят для использования таких функций, как KeyDB во FLASH. Мы не рассматривали этот тип экземпляра более подробно, поскольку аргумент FLASH против типа экземпляра сам по себе станет еще одной статьей. I3 имеет процессор Intel Xeon E5-2686 v4 с частотой 2,3 ГГц и развивает скорость до 400 000 операций в секунду. Расходы несопоставимы с другими случаями, если только вы не пользуетесь хранилищем SSD. Экземпляры i3en используют процессор Intel® Xeon® Scalable (Skylake) или Xeon® Platinum 8175M и могут получать до 845 000 копий / сек. Следовательно, при выборе их важно обращать внимание на спецификаторы экземпляра.
При выборе экземпляров EC2 необходимо учитывать несколько других факторов. Я не собираюсь вдаваться в подробности по этим вопросам. Тем не менее, это помогает знать ваши варианты:
- Вы можете заметить суффиксы в таких случаях, как d, n, a или e. (т. е. m5d.4xlarge).
- «n» означает оптимизированную сеть (более высокая пропускная способность). Процессор может быть разным, поэтому посмотрите.
- «d» означает, что у него есть дополнительное хранилище SSD на базе NVMe. Он физически подключен к хост-серверу и обеспечивает хранилище на уровне блоков, которое связано со временем жизни экземпляра.
- «а» означает, что он имеет процессор AMD.
- Вы можете сравнить типы процессора и статистику здесь .
- Помните об используемом процессоре, так как это может привести к различной производительности. При выборе экземпляров всегда рекомендуется выполнять какие-то тесты.
- Оптимизированные экземпляры EBS могут обеспечить выделенную пропускную способность между томами ec2 и EBS, что в некоторых случаях может иметь преимущества для резервного копирования и сохранения. Опции S3 также являются дешевым вариантом, встроенным в KeyDB.
Есть много чего пережевывать, пытаясь уточнить свой выбор. Поиск правильного компромисса между стоимостью, памятью, производительностью и хранилищем во многом зависит от загрузки / трафика вашей базы данных. Однако, как только у вас есть идея, ее становится немного легче выбрать. Надеемся, что эта статья поможет вам сделать свой выбор, не будучи экспертом по инстансам EC2. AWS документация очень хорошо для улучшения вашего понимания.
Как видно из этой статьи, при настройке недорогого высокопроизводительного хранилища с использованием опций FLASH часто возникает столько же вопросов. В ближайшее время KeyDB выпустит новую версию FLASH и проведет оценку для экземпляров AWS.
Экземпляр бенчмаркинга Memtier был большим экземпляром m5.8x. Экземпляр такого размера необходим для максимального увеличения трафика на KeyDB. Следующая команда использовалась для тестирования в большинстве случаев.
Оболочка
1
memtier_benchmark -s <ipaddressofserver> --threads=32
Тестовый экземпляр KeyDB обычно запускается с помощью следующей команды. Обратите внимание, что количество потоков будет сокращено в зависимости от доступных ресурсов.
Оболочка
xxxxxxxxxx
1
keydb-server --server-threads 7 --server-thread-affinity true
Если вам нужна аутентификация, передайте аргумент --authenticate=<yourpassword>
memtier и --requirepass <yourpassword>
KeyDB. Если вы находитесь в защищенной сети, вы можете использовать --protected-mode no
для KeyDB.
Если ваш экземпляр memtier недостаточно велик, он станет узким местом и искажает результаты. Если вы проходите через VPC, VPN или балансировщик нагрузки, возможно, у вас там есть узкое место. В противном случае цифры должны быть очень похожи на опубликованные.