如何监控EventMachine流程?

时间:2013-07-05 21:57:56

标签: eventmachine newrelic

我们正在使用EventMachine来监听和处理入站I / O事件,我们遇到了一个奇怪的问题,在某些时候,我们的事件循环会在一段时间后完全楔入它停止响应的地方。我们是EventMachine的新手,在事件循环中有一些同步代码并不是很好,但我不希望它在轻负载下完全停止。我们无法一致地重现这个问题,这使得它很难确定下来。

我希望更好地监控循环内的延迟。 This Stackoverflow answer建议连接我已经完成的定期计时器,这似乎到目前为止效果很好。

def self.monitor_reactor_backup
  @last = Time.now
  EM.add_periodic_timer(0.1) do
    latency_ms = (Time.now - @last - 0.1) * 1000
    if latency_ms > 2
      # ::NewRelic::Agent.record_metric('Custom/EM/event_loop_latency', latency_ms)
      msg = "REACTOR BACK-UP >2ms MELTDOWN IMMINENT: #{latency_ms.round} ms"
      Rails.logger.error msg
      puts msg if CONSOLE_MODE
    end
    @last = Time.now
  end
end

我已尝试为此添加NewRelic Custom Metric,但我似乎无法获得这些事件。我在this Stackoverflow thread中读到可以强制启动New Relic,但也不支持它。我能做什么?它还提出了一个更大的问题,即监控EM流程的最佳实践是什么,并了解它们何时变得供应不足?

0 个答案:

没有答案