2016-11-24 6 views
0

У меня есть большое приложение NodeJS 7.2.0, для которого требуется много мощности процессора. Я начал погружать его в отдельные приложения, чтобы каждый процесс использовал другой процессор.несколько приложений nodejs используют один и тот же cpu0 или они разделены между процессором?

У меня есть сервер на амазонке с 8 виртуальными процессорами.

В последнее время мне сказали, что каждый процесс nodejs использует CPU0 по умолчанию, и нет никакого способа его изменить, а это значит, что дайвинг моего большого приложения так, как и многие микросервисы, как я хочу, не решит мою проблему.

это действительно так? будут ли все процессы nodejs использовать CPU0 по умолчанию? есть ли способ изменить это?

вся информация относительно выпуска была бы принята с благодарностью.

благодаря

+2

Я не могу сказать, делает ли Amazon что-то особенное с его виртуальными процессорами, но ОС Linux автоматически распространяет различные приложения на разные фактические процессоры. По умолчанию они не будут привязаны к определенному процессору, но если все приложения заняты, и для работы достаточно процессоров, каждый из них будет находиться на отдельном CPU. Это точка кластеризации узлов, она позволяет каждому кластеру node.js выполняться на отдельном процессоре, тогда как один процесс node.js будет в основном использовать только один процессор. – jfriend00

+0

@ jfriend00 - спасибо за ваш ответ, так что вы говорите, что мне действительно не нужно ограничивать каждый процесс nodejs другим процессором? os будет делить процессы между процессором, где это необходимо? – ufk

+1

Да, ОС, естественно, будет распространять различные процессы среди разных процессоров. Вы говорите об виртуальных процессорах Amazon, поэтому я не могу сказать, как это может отличаться от простой ОС с реальными процессорами. Амазонка может каким-то образом ограничивать вас. – jfriend00

ответ

1

Я не думаю, что вы можете выбрать процессор для запуска процесса в Node.js стороне. Однако вы можете установить приоритет процессора на уровне ОС.

Ссылка: taskset equivalent in windows

Другим решением является использование узла кластера.

+0

привет! :) спасибо за Ваш ответ. мой сервер - это Linux-сервер, я прочитал эквивалент задач в окнах, и это помогло мне понять, что я могу ограничить процесс конкретным процессором, который велик. Я также читал кластер api, и я не совсем понял, как там я могу контролировать, какой процесс пойдет на какой процессор. я не совсем понимаю преимущества многоядерных процессоров, использующих узел-кластер, над запуском нескольких процессов на pm2. – ufk

+0

Поскольку один экземпляр node.js запускается в одном потоке, если вы используете кластер для создания экземпляра из 8 экземпляров, каждый экземпляр будет использовать 1 процессор в вашем случае, то есть оптимизировать использование многоядерного процессора. (предполагая, что ваш процесс может работать в режиме кластера). Если все процессы выполняются в режиме кластера, весь процесс будет разделяться (теоретически) среди всех процессоров. – iKoala

+0

Я предпочитаю метод микроуслуг, который каждый процесс запускается самостоятельно без использования узла-кластера, вы говорите, что узел-кластер будет иметь лучшее многоядерное использование, а затем выполнить несколько процессов индивидуально? – ufk