PM2 cluster mode, Идеальное количество рабочих?

Я использую PM2 для запуска своего приложения nodejs.

При запуске в режиме кластера «pm2 start server -i 0»: PM2 автоматически порождает столько рабочих, сколько у вас ядер ЦП.

Какое идеальное количество рабочих для работы и почему?


pm2
person Jonatan Lundqvist Medén    schedule 03.10.2015    source источник


Ответы (1)


Остерегайтесь переключения контекста. При запуске нескольких процессов на вашем компьютере, постарайтесь убедиться, что каждое ядро ​​ЦП будет постоянно занято одним потоком приложения за раз. Как правило, вы должны стремиться создавать процессы приложения N-1, где N - количество доступных ядер ЦП. Таким образом, каждый процесс гарантированно получит хороший кусок одного ядра, а планировщик ядра сможет запускать на нем другие серверные задачи. Кроме того, постарайтесь убедиться, что на сервере будет мало или совсем не работать, кроме вашего приложения Node.JS, чтобы процессы не боролись за ЦП.

Мы допустили ошибку, когда развернули на наших серверах два загруженных приложения node.js, каждое из которых порождает N-1 процессов. Процессы приложений начали яростно конкурировать за ЦП, что привело к резкому увеличению нагрузки на ЦП и его использования. Несмотря на то, что мы запускали их на мощных 8-ядерных серверах, мы платили заметный штраф из-за переключения контекста. Переключение контекста - это поведение, при котором ЦП приостанавливает одну задачу, чтобы работать над другой. При переключении контекста ядро ​​должно приостановить все состояние для одного процесса, пока оно загружается и выполняет состояние для другого. После простого уменьшения количества процессов, порождаемых приложениями, так что каждое из них имеет одинаковое количество ядер, нагрузка значительно упала:

https://engineering.gosquared.com/optimising-nginx-node-js-and-networking-for-heavy-workloads

person Jonatan Lundqvist Medén    schedule 04.10.2015