Я хотел бы отслеживать, сколько времени проходит каждый цикл цикла в node.js. Однако я не уверен в лучшем способе измерения этого. Лучший способ я мог придумать выглядит следующим образом:Как обнаружить и измерить блокировку цикла событий в node.js?
var interval = 500;
var interval = setInterval(function() {
var last = Date.now();
setImmediate(function() {
var delta = Date.now() - last;
if (delta > blockDelta) {
report("node.eventloop_blocked", delta);
}
});
}, interval);
Я в принципе вывести время выполнения цикла событий, глядя на задержке setInterval
. Я видел такой же подход в модуле узла blocked, но он чувствует себя неточным и тяжелым. Есть ли лучший способ получить эту информацию?
Обновление: Изменено код для использования setImmediate
как сделано hapi.js.
[Люди, работающие в hapi.js, делают это аналогичным образом] (https://github.com/hapijs/good/blob/ecd705719777af5810dc224001940205cfebd2eb/lib/process.js#L14-L21), и они контролируют это значение постоянно, поэтому похоже, что это будет ваша самая безопасная ставка. –
Спасибо за указатель. Их использование os 'setImmediate' еще лучше. –