Нерациональное использование процессора, блокирование процесса Node - PullRequest
0 голосов
/ 29 марта 2012

Недавно я испытал одну вещь в node.js, которую я не понимаю.

У меня есть несколько приложений, каждое из которых выполняет некоторые вычисления на довольно большом количестве данных, которые статически расположены в памяти. (около 400 МБ) При расчете загрузка ЦП возрастает, как и ожидалось, и уменьшается после завершения. Но после этого ЦП снова увеличивается , даже если расчет не запускается.

Пока этот процессор работает, процесс узла блокируется, поэтому никакие другие вычисления не выполняются вообще. Это происходит в процессах HTTP-сервера, в командной строке ...

Как я выяснил, это соответствует количеству задействованных данных.

Кроме того, время от времени ЦП повышается, когда нет вычисления выполняются в течение более длительного времени, что также блокирует весь процесс, делая его бесполезным.

Я создал пример, который воспроизводит это поведение. Просто запустите скрипт и несколько раз нажмите Enter после завершения загрузки скрипта.

https://gist.github.com/2237364

У кого-нибудь есть идея, что может быть причиной этого? А что можно сделать против?

Заранее спасибо!

Редактировать: Некоторая дополнительная информация: Когда я запускаю определенный расчет во время бенчмаркинга и блоки сценариев, бенчмарк сообщает мне после времени ожидания ~ 1,5 секунды, что мой расчет был выполнен за 2 мс. Так что на самом деле не мой расчет вызвал эту блокировку, но что-то еще ...

...