2013-07-30 2 views
0

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

Мой единственный страх в том, что у меня может быть много пользователей, тысячи одновременно выполняют эту работу, и это будет означать, что у меня будут тысячи процессов, запущенных в моем Linux-окне, потому что node.js запускает новый процесс каждый выполняется время child_process. Мой вопрос: сколько процессов может обрабатывать сервер linux?

Примечание. Мой сервер представляет собой двухъядерную виртуальную виртуальную машину с 4-гигабайтной памятью. Нет, ничего необычного. Примечание №2: Я ищу простую цифру шарика здесь. В тысячах? Благодарю.

+0

_Waaaay_ слишком широкий. Мой нетбук может запускать NodeJS, и ответ тогда «не очень много». Поместите свой код на 24-ядерный ящик Haswell Xeon, и он будет обслуживать десятки тысяч, поэтому мой близкий голос за это слишком широкий. – Bojangles

+0

Можете ли вы сделать так, чтобы он разделял части расчета среди пользователей, а не делал все это ради всех ? Представим себе, что 3000 входов выглядят одинаково, поэтому промежуточный шаг может быть где-то сохранен. –

+0

Фредерик, это справедливое предложение. Благодарю. – foreyez

ответ

0

Две точки ...

  1. Если вы можете cache/memoize результаты в зависимости от сценария, сделайте это.
  2. Я хотел бы использовать generic-pool, чтобы ограничить использование разреженных ресурсов. Объединив контроллер с пулом узлов, вы можете ограничить себя 10 или 20 активными работниками в данный момент времени. Я бы не делал больше, чем 2x физического физического процессора, хотя сколько потоков, которые вы можете запустить, действительно зависит от рабочих/систем. Если все рабочие процессы одинаковы, это более предсказуемо.
Смежные вопросы