我正在使用newrelic(开发者模式)来监控我的rails应用程序。 奇怪的是,加载相同的页面会产生不同的加载结果,其中一个随机部分不断超过其余部分。
作为示例(来自同一页面的所有结果,“messages / 1”,只是刷新)
Exclusive Total Administration#find_by_sql 269 ms 35% 276 ms 36% messages/show.html.erb Template 113 ms 15% 183 ms 24% MessagesController#show 90 ms 12% 760 ms 99% events/_events_box.html.erb Template 24 ms 3% 24 ms 3% SQL/show 19 ms 2% 19 ms 2% User#find 19 ms 2% 19 ms 2% Remainder 234 ms 31% 234 ms 31% ------- subscriptions/_subscribe.html.erb Template 266 ms 44% 272 ms 45% MessagesController#show 61 ms 10% 606 ms 99% messages/show.html.erb Template 61 ms 10% 365 ms 60% SQL/other 24 ms 4% 24 ms 4% layouts/_header.html.erb Template 20 ms 3% 28 ms 5% events/_events_box.html.erb Template 19 ms 3% 19 ms 3% Remainder 160 ms 26% 160 ms 26% ------- drafts/_js_and_sbox.html.erb Template 265 ms 44% 269 ms 45% MessagesController#show 72 ms 12% 595 ms 100% messages/show.html.erb Template 57 ms 9% 356 ms 59% events/_events_box.html.erb Template 19 ms 3% 19 ms 3% layouts/_header.html.erb Template 18 ms 3% 28 ms 5% SQL/other 15 ms 2% 15 ms 2% Remainder 153 ms 26% 153 ms 26%
是否有人知道为什么代码的随机部分(通常无关紧要且加载速度快)总是占用几乎一半的加载时间?也许是因为我在某些模板中执行查询?
答案 0 :(得分:2)
这有点晚了,但也许对其他人有帮助......我认为这是因为垃圾收集随机点击并使页面加载时间膨胀大约150毫秒,请参阅this article了解更多信息讨论:
ruby-prof属性的全部费用 垃圾收集方法在哪里 GC被触发,而不是方法 分配内存。这就像 归咎于打破最后一根稻草 骆驼回来了。
答案 1 :(得分:1)
另一个选项是你的db在某些时候可能有点过载 - 造成缓慢的db-queries / wait-times。 NewRelic有时并不是非常具体。
如果您真的想调整自己的行为,我会将NewRelic的声明作为您希望使用更好的工具(例如ruby-prof)进行测试的指南。