我有一個Rails應用程序在postgreSQL上的rackspace上運行。Rails 3.2.1生產運行緩慢的應用程序
它真的很慢。
在特殊的要求,它使用了4秒響應
我已經安裝了新的遺蹟。
我可以看到,例如某些控制器的索引動作是最慢的。他們很簡單,有幾個發現。
所以,我真的不明白是什麼讓它變慢。
我想知道你們是否都可以提到一些可以發現性能問題的寶石?
我知道子彈,這有助於查找數據庫的n + 1查詢,但那不是我的問題。
通過請求我添加項目控制器的索引作用(平均4000毫秒的響應時間)
def index
@firm = current_firm
@projects = current_user.projects.is_active
@customers = @firm.customers
@project = Project.new
@todo = Todo.new
end
的IS_ACTIVE方法是在模型
scope :is_active, where(["active = ?", true])
一個範圍從應用程序控制器我有一些助手和before_filters。其中之一可能是問題(或其他)這就是爲什麼我想有一些工具來追蹤性能問題。
更新 看production.log我看到
Rendered logs/_list_header.html.erb (0.3ms)
Rendered logs/_log.html.erb (127.7ms)
Rendered private/log_range.js.erb (721.2ms)
Completed 200 OK in 836ms (Views: 733.2ms | ActiveRecord: 43.9ms)
Processing by ProjectsController#index as HTML
Rendered projects/_index.html.erb (4149.8ms)
Rendered projects/index.html.erb within layouts/application (4157.0ms)
Rendered layouts/_header.html.erb (0.3ms)
Completed 200 OK in 6682ms (Views: 4199.6ms | ActiveRecord: 457.0ms)
Processing by LogsController#stop_tracking as JS
Parameters: xxxxx
Rendered logs/_tracking_partial.html.erb (121.1ms)
Rendered logs/_start_tracking.html.erb (6877.9ms)
Rendered logs/_log.html.erb (43.0ms)
Rendered logs/stop_tracking.js.erb (7224.0ms)
Completed 200 OK in 9968ms (Views: 7617.2ms | ActiveRecord: 455.3ms)
看看最後一個。花了很多時間來渲染視圖和js。什麼會導致這一點。意見中沒有發現。我只是使用控制器的實例變量。數據庫中的條目少於20個。這可能是因爲訪問這些視圖的計算機上的網絡連接速度慢嗎?
可能是列沒有索引? – evfwcqcg
也許你可以發佈一個最差的控制器的代碼(也可能是你的應用程序控制器代碼)。 –
@evfwcqcg感謝您的回覆。你能告訴我如何做或鏈接到教程? –