Назад | Перейти на главную страницу

AWS - четыре t3.micro с балансировкой нагрузки и один t3.medium для API NodeJS

Я пытаюсь решить, какая из двух настроек принесет мне больше цена / производительность значение с учетом того, что я буду запускать API NodeJS в кластерный режим:

Все цены действующие на Регион Сингапур.

  1. Четыре экземпляра t3.micro (2 виртуальных ЦП, 1 ГиБ ОЗУ)

    • Экземпляры: 0,0132 х 4 = 0,0528 долл / ч
    • Балансировщик нагрузки приложений: 0,0252 долл. / Ч
  2. Один экземпляр t3.medium (2 виртуальных ЦП, 4 ГиБ ОЗУ)

    • Экземпляр: 0,0528 x 1 = 0,0528 долл. / Ч

Было бы ясно, что использование t3.micro с ALB будет стоить дороже но дал бы мне (1 виртуальный ЦП = 1 узел), всего 8 узловых кластеров но каждый из двух использует 1 ГБ памяти.

С другой стороны, я бы 2 кластера узлов получая щедрые 4 ГиБ памяти.

Предполагая, что любая установка получит одинаковую нагрузку / процесс / запросы. Мне сложно определить, что будет более производительным, особенно потому, что я обнаружил, что nodejs лучше работает в режиме кластера (когда у экземпляра более 1 ядра). Что из этого даст мне больше производительности по цене?

Помимо запуска вашего node.js API поверх EC2 Например, вы можете попробовать использовать AWS Lambda.

AWS Lambda бесплатно за 1 млн запросов в месяц и 0,20 за 1 млн запросов в дальнейшем.

Полностью зависит от нагрузки и необходимости TLS / SSL. Сделал несколько тестов с аналогичным набором вопросов. Что касается использования ЦП, быстро стало ясно, что обработка большого количества небольших запросов создает довольно много накладных расходов на стороне TLS, которые могут быть прекращены на балансировщике нагрузки, смещая использование ЦП с экземпляров.

Балансировка нагрузки с экземплярами в нескольких зонах доступности также может считаться более устойчивой.

С другой стороны, использование памяти, скорее всего, более эффективно на одном экземпляре с одним механизмом кэширования на уровне операционной системы. Кроме того, накладные расходы ОС присутствуют только один раз.

Если вы действительно хотите оптимизировать настройку, скорее всего, лучший способ - настроить какой-нибудь нагрузочный тест и сравнить результаты. У t2.micro может очень быстро закончиться загрузка ЦП, но это также сильно зависит от запускаемого приложения. Если он голоден по памяти, вам будет лучше, если в экземпляре будет больше памяти.