यदि यह नोडजेस के लिए है, तो क्या एक साधारण मॉनिटर थ्रेड होगा? मुझे घटना कतार आंतरिक के बारे में जानकारी प्राप्त करने के तरीके के बारे में पता नहीं है, लेकिन आप घटना कतार में एक ट्रैसर इंजेक्ट कर सकते हैं ताकि यह सुनिश्चित किया जा सके कि धागे समय पर चल रहे हैं। (यह उपायों को अभी तक नहीं चलने वाले धागे की संख्या से लोड किया जाता है, लेकिन क्या थ्रेड समय पर चल रहे हैं।)
एक मॉनिटर थ्रेड स्वयं को फिर से कतार कर सकता है और जांच सकता है कि इसे कॉल किया जाता है कम से कम हर 10 मिलीसेकंड (या जो भी अधिकतम संचयी अवरुद्ध एमएस की अनुमति है)। चूंकि नोडज थ्रेड राउंड-रॉबिन चलाता है, अगर मॉनीटर थ्रेड समय पर चल रहा था, तो यह हमें बताता है कि अन्य सभी धागे को उसी 10 एमएस विंडो में चलाने का मौका मिला है। (नोड में) की तरह कुछ:
// like Date.now(), but with higher precision
// the extra precision is needed to be able to track small delays
function dateNow() {
var t = process.hrtime();
return (t[0] + t[1] * 1e-9) * 1000;
}
var _lastTimestamp = dateNow(); // when healthMonitor ran last, in ms
var _maxAllowedDelay = 10.0; // max ms delay we allow for our task to run
function healthMonitor() {
var now = dateNow();
var delay = now - _lastTimestamp;
if (delaly > _maxAllowedDelay) {
console.log("healthMonitor was late:", delay, " > ", _maxAllowedDelay);
}
_lastTimestamp = now;
setTimeout(healthMonitor, 1);
}
// launch the health monitor and run it forever
// note: the node process will never exit, it will have to be killed
healthMonitor();
अलर्ट संदेश थ्रॉटलिंग और एक साफ बंद का समर्थन कर एक व्यायाम पाठक के लिए छोड़ दिया है।
क्या आप libode का उपयोग node.js ऐप या स्टैंडअलोन के हिस्से के रूप में कर रहे हैं? –