| 123456789101112131415161718 |
- module.exports = EventLoopMonitor =
- monitor: (logger, interval = 1000, log_threshold = 100) ->
- Metrics = require "./metrics"
- # check for logger on startup to avoid exceptions later if undefined
- throw new Error("logger is undefined") if !logger?
- # monitor delay in setInterval to detect event loop blocking
- 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(intervalId)
|