1

我看到控制器中的创建操作请求非常缓慢(所有其他操作都在可接受的范围内)。跟踪日志告诉我,视图和活动记录虽然不是最快的,但只是总加载时间的一小部分。这是我看到的:

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

有没有办法查看剩余的时间都花在了哪里?我试过 Mini Profiler,但它并没有告诉我时间花在哪里。

为了添加一些额外的上下文,模型(故事)有一个 has_many :through 将它连接到用户模型。似乎只有当用户被分配到故事时才会出现减速。如果没有选择用户,则响应时间很好。问题可能是连接模型上缺少索引吗?

4

2 回答 2

0

像这样使用基准:

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

您将在 development.log 中获得结果。您也可以在视图中使用它:

<% benchmark 'some partial' do %>
    <div>copde here</div>
<% end %>
于 2013-07-16T13:09:00.937 回答
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

ps 使用 #{Time.now} 不够聪明。您应该配置您的日志文件以支持时间格式。我建议使用 log4r。请参阅此堆栈帖子:如何使用 Rails 3.0.x 配置 Log4r?

于 2013-04-24T22:25:14.013 回答