Chciałbym monitorować, jak długo trwa uruchamianie pętli zdarzeń w pliku node.js. Jednak nie jestem pewien, jak najlepiej to zmierzyć. Najlepszym sposobem mogłem wymyślić wygląda następująco:Jak wykrywać i mierzyć blokowanie pętli zdarzeń w pliku 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);
I w zasadzie wnioskować czas pracy pętli zdarzeń patrząc na zwłoki z setInterval
. Widziałem to samo podejście w module węzła blocked, ale jest ono niedokładne i ciężkie. Czy istnieje lepszy sposób na uzyskanie tych informacji?
Aktualizacja: Zmieniono kod, który ma być używany jako setImmediate
zgodnie z hapi.js.
[Ludzie hapi.js robią to w podobny sposób] (https://github.com/hapijs/good/blob/ecd705719777af5810dc224001940205cfebd2eb/lib/process.js#L14-L21) i monitorują tę wartość stale, więc wygląda na to, że jest to najbezpieczniejszy zakład. –
Dzięki za wskaźnik. Ich użycie os 'setImmediate' jest jeszcze lepsze. –