Rails Rails Log 里面显示的 View + ActiveRecord 耗时和总耗时不一致?

tsinghan · 2015年11月13日 · 最后由 hiveer 回复于 2016年08月24日 · 2792 次阅读

Completed 200 OK in 1266.4ms (Views: 137.0ms | ActiveRecord: 61.5ms) 这是在 development 环境下 log 的输出,views 137ms, ActiveRecord 61.5ms 但总耗时是 1266.4ms 这是总么计算的?还是我忽略掉了什么呢

如果是虚拟机里面,可能是文件共享导致的磁盘性能低。可以替换其他同步方案 https://docs.vagrantup.com/v2/synced-folders/index.html

或者是被其他系统性能拖慢。

#1 楼 @rei 不是虚拟机,其他系统性能指的是?

#2 楼 @tsinghan 不知道,你可以换个环境试试。

除了 view 和 db,应用还有没有别的耗时操作?

在连接上?

#4 楼 @rei 再就是 memcached,其他的没有了

#5 楼 @Ddl1st 在连接上 是什么意思?

是不是编译 coffee 等

#8 楼 @hw676018683 不是,编译 coffee 的话,log 里面就显示了

前一阵也发现这个问题了。经测试是 action 里的耗时没有显示出来。在 action 里加一个sleep可以明显察觉这个问题。

前几天也发现类似问题,是 development 环境。 一行一行的 debug 下,最后在把 coffee 和 css 两行注释掉后,明显秒开了。

#13 楼 @rubyist518 #12 楼 @nine 我尝试把 js,和 css 给注释掉了,但是还是没什么太大变化,你是怎么 debug 的?

#14 楼 @tsinghan 二分查找法啊 注释掉一半代码,看看速度有没有提升。

我也遇到过这种问题,想了想觉得可能是因为我们用到了active_resource,这就和网络情况有关系了。

@tsinghan 可以用rack-mini-profiler看一下时间消耗在哪部分,然后细分一下看看。

在 development 环境下,每个 request 都会 load 文件,这个也是会耗时的。然后如 #10 楼 @santochancf 所说,在 action 里面的 logic 耗时也是没有算进来的。

ActiveRecord: 61.5ms

这个时间是不是就是数据库查询的时间呢?这个时间的计算是从哪个时刻开始哪个时刻结束呢?求解答

需要 登录 后方可回复, 如果你还没有账号请 注册新账号