2013-04-24 118 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 %>