diff --git a/libraries/metrics/event_loop.coffee b/libraries/metrics/event_loop.coffee index ab6955afc7..4e410892bf 100644 --- a/libraries/metrics/event_loop.coffee +++ b/libraries/metrics/event_loop.coffee @@ -1,18 +1,16 @@ -seconds = 1000 - module.exports = EventLoopMonitor = - monitor: (logger) -> - interval = setInterval () -> - EventLoopMonitor.Delay() - , 1 * seconds + monitor: (logger, interval = 1000, log_threshold = 100) -> Metrics = require "./metrics" + + previous = Date.now() + intervalId = setInterval () -> + now = Date.now() + offset = now - previous - interval + if offset > log_threshold + logger.warn {offset: offset}, "slow event loop" + previous = now + Metrics.timing("event-loop-millsec", offset) + , interval + Metrics.registerDestructor () -> - clearInterval(interval) - - Delay: () -> - Metrics = require "./metrics" - t1 = process.hrtime() - setImmediate () -> - delta = process.hrtime(t1) - responseTime = delta[0]*1e6 + delta[1]*1e-3 - Metrics.timing("event-loop-microsec", responseTime) + clearInterval(intervalId)