My Node.js (мы используем v6.9.5), приложение часто использует> 80% использования ЦП (также на V4). После выполнения некоторых основных профилирование, кажется, что она порождая много дочерних процессов:Приложение Node.js имеет высокую загрузку процессора из-за `spawn`, как я могу регистрировать все вызовы?
[Summary]:
ticks total nonlib name
345 6.7% 6.9% JavaScript
4451 86.7% 89.1% C++
82 1.6% 1.6% GC
136 2.6% Shared libraries
201 3.9% Unaccounted
----------
[C++]:
ticks total nonlib name
2606 50.8% 52.2% node::ProcessWrap::Spawn(v8::FunctionCallbackInfo<v8::Value> const&)
319 6.2% 6.4% node::ContextifyScript::New(v8::FunctionCallbackInfo<v8::Value> const&)
284 5.5% 5.7% syscall
111 2.2% 2.2% write
31 0.6% 0.6% void node::StreamBase::JSMethod<node::StreamWrap, &(int
Я добавил протоколирования для всех наших приложений по конкретным child_process.spawn
/exec
/execFile
вызовов, но ни один из них не объясняет, почему CPU тратит на это столько времени.
Я хотел бы прямо сейчас войти все вызовы child_process
внутри все в node_modules
, которые мы используем, в случае, если есть модуль, который посылает слишком много вызовов из-за какую-то ошибку, чрезмерно нетерпеливого выполнением обратных вызовов, или каким-либо другое злоупотребление с нашей стороны.
Первоначально я решил создать модуль обертки child_process
с добавлением журнала и надеюсь, что наши зависимости будут использовать это в отношении собственного модуля Node.js, к сожалению, зависимости, похоже, продолжают использовать собственный модуль.
Вопрос:
- Как я могу добавить вход на все
spawn
вызовы моего процесса? Или есть лучший способ получить больше информации о том, какая часть нашего приложения вызывает икру?
В случае, если я уезжаю полностью:
- Может ли быть другая причина
node::ProcessWrap::Spawn(v8::FunctionCallbackInfo<v8::Value> const&)
потреблять относительно так много CPU тикает, кромеchild_process
звонков?
Любые подсказки оцениваются!