如何使用Ruby New Relic代理获得更详细的事务跟踪

时间:2011-12-16 07:04:41

标签: ruby-on-rails ruby performance newrelic

我在Heroku上运行rails 3.0应用程序并使用New Relic插件/服务。

我一直在研究事务跟踪功能(专业版中提供),以便更多地了解应用程序的性能特征。然而,很大一部分时间(30-50%)是“未经检测的时间”。通过在某些地方放置method_tracers并经历相当慢的周期以测试我是否获得更多信息来做几次刺伤后,我感觉这种情况无处可去。

在PHP新的遗留代理中,它们有一个很棒的功能来获取非常详细的跟踪,而无需猜测放置方法跟踪器的位置:http://newrelic.com/docs/php/php-agent-faq#top100

ruby​​有什么类似的东西吗?

注意:我已经使用rpm_contrib获取更多信息并启用了垃圾收集统计信息。此外,这不是解决性能问题,只是了解如何更好地使用可用的性能工具,并抓住关于未经检测的时间的琐事。

2 个答案:

答案 0 :(得分:2)

目前没有任何类似的Ruby。当我有机会时,我会向Ruby工程师提及它。我的猜测是,除非有很多请求进入它,但它暂时不会在列表的顶部。在此期间,您可以使用方法跟踪器来计算未经检测的时间。

希望有所帮助。

答案 1 :(得分:1)

方法跟踪器可以很好地工作,但是如果你的控制器中有很多代码,可以尝试使用trace_execution_scoped进行二进制搜索,它会记录在一段代码中花费的时间:

http://newrelic.github.com/rpm/NewRelic/Agent/MethodTracer/InstanceMethods/TraceExecutionScoped.html#method-i-trace_execution_scoped

添加几个调用,给每个指标一个合理的名称,如“Custom / MySlowControllerAction / block0”(trace_execution_scoped的第一个参数),然后重复。

您命名的指标不仅会显示在“事务跟踪”中,还会显示在“Web事务”选项卡下的控制器操作的“性能细分”中,因此您将看到所有请求中该代码块的平均时间,而不仅仅是慢的。