Ich möchte überwachen, wie lange jeder Lauf der Ereignisschleife in node.js dauert. Ich bin mir jedoch unsicher, wie dies am besten gemessen werden kann. Die beste Weise, die ich oben mit wie folgt aussieht kommen könnte:Wie erkennen und messen Sie die Blockierung von Ereignisschleifen in 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);
Ich schließe grundsätzlich die Laufzeit Ereignisschleife um die Verzögerung eines setInterval
suchen. Ich habe den gleichen Ansatz im blocked Knotenmodul gesehen, aber es fühlt sich ungenau und schwer an. Gibt es einen besseren Weg, um zu diesen Informationen zu gelangen?
Update: Changed den Code zu verwenden setImmediate
wie von hapi.js getan.
[Die hapi.js Leute tun es in ähnlicher Weise] (https://github.com/hapijs/good/blob/ecd705719777af5810dc224001940205cfebd2eb/lib/process.js#L14-L21), und sie überwachen diesen Wert ständig, so scheint es, dass dies deine sicherste Wette wäre. –
Danke für den Zeiger. Ihre Verwendung os 'setImmediate' ist sogar noch besser. –