Недавно я испытал одну вещь в node.js, которую я не понимаю.
У меня есть несколько приложений, каждое из которых выполняет некоторые вычисления на довольно большом количестве данных, которые статически расположены в памяти. (около 400 МБ)
При расчете загрузка ЦП возрастает, как и ожидалось, и уменьшается после завершения.
Но после этого ЦП снова увеличивается , даже если расчет не запускается.
Пока этот процессор работает, процесс узла блокируется, поэтому никакие другие вычисления не выполняются вообще. Это происходит в процессах HTTP-сервера, в командной строке ...
Как я выяснил, это соответствует количеству задействованных данных.
Кроме того, время от времени ЦП повышается, когда нет вычисления выполняются в течение более длительного времени, что также блокирует весь процесс, делая его бесполезным.
Я создал пример, который воспроизводит это поведение.
Просто запустите скрипт и несколько раз нажмите Enter после завершения загрузки скрипта.
https://gist.github.com/2237364
У кого-нибудь есть идея, что может быть причиной этого?
А что можно сделать против?
Заранее спасибо!
Редактировать: Некоторая дополнительная информация: Когда я запускаю определенный расчет во время бенчмаркинга и блоки сценариев, бенчмарк сообщает мне после времени ожидания ~ 1,5 секунды, что мой расчет был выполнен за 2 мс. Так что на самом деле не мой расчет вызвал эту блокировку, но что-то еще ...