Почему нет разницы в производительности между fork mode и cluster mode в PM2?

Здравствуйте!

Имеется двухядерный сервак с 2Гб оперативой. На нем работает NodeJS приложение в связке с PM2 в fork mode, т.е. использует один поток. Решил проверить производительность через JMeter:
- Количество user - 100
- Период наращивания мощности - 5 секунд
- Цикл - 10
Приложение потребляет память 80-100Мб.

Однопоточный режим, выдал:
- без нагрузки 50-70ms
- в пике нагрузки (100 запросов в секунду) выдает Latency 650-750ms.

Теперь переключаюсь на режим cluster. В pm2 соответственно работают два инстанса. Запускаю тот же тест:
- без нагрузки 50-70ms
- в пике 550-650ms.

Скажите мне пожалуйста, разве второе ядро не должно увеличивать производительность почти вдвое или я что-то делаю не так?
  • Вопрос задан
  • 718 просмотров
Пригласить эксперта
Ответы на вопрос 2
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Во-первых, cluster мод отличается от fork только тем, что умеет шарить слушаемые tcp порты между процессами. И там и там процессов будет ровно столько, сколько настроите, а значение по умолчанию - количество физических потоков (логических ядер) системы.
Во-вторых, "двухядерный сервак с 2Гб оперативой" выглядит как виртуалка на большом сервере, где Вам выделили некоторые ресурсы. И ваши 2 ядра вполне могут быть логическими, но физически - 1 ядром или даже его половиной (если 4 потока на ядро), за счет гипертрединга. Вот только гипертрединг штука нацеленная на лучшую утилизацию ресурсов процессора при простоях, а вот при большой нагрузке он вполне себе может замедлить систему, особенно основанную на кооперативной многозадачности (асинхронном исполнении) как в ноде.
Ответ написан
@vitaly_il1
DevOps Consulting
Насколько понимаю, fork тоже использует все CPU. Можно проверить, посмотрев нагрузку по CPU - top и т.п.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 19:51
15000 руб./за проект
22 нояб. 2024, в 19:15
200000 руб./за проект
22 нояб. 2024, в 18:50
30000 руб./за проект