event_loop.coffee 473 B

12345678910111213141516
  1. module.exports = EventLoopMonitor =
  2. monitor: (logger, interval = 1000, log_threshold = 100) ->
  3. Metrics = require "./metrics"
  4. previous = Date.now()
  5. intervalId = setInterval () ->
  6. now = Date.now()
  7. offset = now - previous - interval
  8. if offset > log_threshold
  9. logger.warn {offset: offset}, "slow event loop"
  10. previous = now
  11. Metrics.timing("event-loop-millsec", offset)
  12. , interval
  13. Metrics.registerDestructor () ->
  14. clearInterval(intervalId)