处理请求时每行执行所花费的 Rails 分析时间
Posted
技术标签:
【中文标题】处理请求时每行执行所花费的 Rails 分析时间【英文标题】:Rails profiling time taken for each line execution while process request 【发布时间】:2021-09-29 12:55:49 【问题描述】:有没有更好的方法来查找处理 HTTP 请求时执行的每个逻辑所花费的时间。我们需要单独分析而不是分组分析,并为多件事留出时间。我们尝试了 NewRelic、AppSignal 来获取这些数据,但没有成功。
我也添加了截图,在这里我们可以看到 ActiveRecord 大约需要 1.5 秒,视图渲染视图(响应)大约需要 300 毫秒。当我们将这两者相加时,大约需要 2 秒,但请求的总时间是 10 秒。我们无法找到其余 8 秒的时间。 NewRelic 说 90% 的时间来自控制器操作,但没有故障。有没有更好的工具来获取更详细的信息?
注意:大部分时间它工作正常,我们在特定时间遇到问题。但我们没有导致缓慢的原因,只能确定这一点,我们希望工具能够找到它。
【问题讨论】:
【参考方案1】:AppSignal 可以帮助您解决此问题,以下是 AppSignal 在查看特定操作的性能时提供的事件时间线示例。
这是为 Rails 提供的。在某些情况下,您希望进一步缩小custom instrumentation 的范围,它可以帮助您找到导致性能问题的特定代码。
您可以reach out to us at AppSignal,我很乐意为您提供帮助。
【讨论】:
【参考方案2】:可能有一些工具选项可以为您提供更多开箱即用的信息。但是,如果您真的想找出瓶颈,您可能希望自己动手做一些好的老式调试。在控制器操作中使用 ruby 的内置 Benchmark
模块并记录结果。这可以帮助您确定哪些代码段会占用响应时间。
https://ruby-doc.org/stdlib-3.0.0/libdoc/benchmark/rdoc/Benchmark.html
【讨论】:
以上是关于处理请求时每行执行所花费的 Rails 分析时间的主要内容,如果未能解决你的问题,请参考以下文章