2013-04-24 102 views
1

我在控制器中看到对创建操作的请求非常慢(所有其他操作都在可接受的限制内)。拖尾日志显示视图和主动记录虽然不是最快的,但仅占总加载时间的一小部分。以下是我所看到的:找出缓慢Rails请求的原因

Completed 200 OK in 37023ms (Views: 530.1ms | ActiveRecord: 251.2ms | Sphinx: 0.0ms) 

有没有办法查看剩余时间花在哪里?我试过Mini Profiler,但它并没有显示我在哪里花费的时间。

要添加一点额外的上下文,模型(Story)有一个has_many:通过它将它连接到用户模型。看起来,只有当用户被分配到故事时,放缓才会发生。如果没有用户被选中,响应时间很好。问题是否可能缺少连接模型中的索引?

回答

0

我的一个做法是将日志添加到您的操作中。例如

def some_action_which_is_very_slow 
    logger.debug "== line 1, #{Time.now}" 
    # statement 1 
    logger.debug "== line 2, #{Time.now}" 
    # statement 2 
    logger.debug "== line 3, #{Time.now}" 
    # statement 3 
end 

p.s.使用#{Time.now}不够智能。您应该配置您的日志文件以支持时间格式。我建议使用log4r。看到这样的叠后:How to configure Log4r with Rails 3.0.x?

0

使用基准这样的:

def some_action 
    benchmark 'running queries' do 
     # some code for running queries 
    end 
    benchmark 'some other operation' do 
     # some other code 
    end 
end 

,你会得到在developement.log结果。您也可以在视图中使用它:

<% benchmark 'some partial' do %> 
    <div>copde here</div> 
<% end %>