2012-11-09 66 views
0

我有一個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個。這可能是因爲訪問這些視圖的計算機上的網絡連接速度慢嗎?

+1

可能是列沒有索引? – evfwcqcg

+0

也許你可以發佈一個最差的控制器的代碼(也可能是你的應用程序控制器代碼)。 –

+0

@evfwcqcg感謝您的回覆。你能告訴我如何做或鏈接到教程? –

回答

1

的問題是資產管道

我有一些沒有預編譯的css和js文件。我沒有收到任何錯誤消息,但您必須準確的命名。否「。」在文件名中沒有「.css」

索引沒有幫助。但是,當數據庫中有更多條目時,它可能會提高性能。

1

也許你的Postgresql數據庫服務是一個廢話,或者它遠離你的應用程序服務器?

無論如何,你應該創建索引! 如何?在遷移過程就像

add_index :costumers, :firm_id 

您還可以使用多列添加索引例如

add_index :projects, [:user_id, :alive] 

這裏是add_index

add_index(TABLE_NAME,COLUMN_NAMES,選項)所有選項:用 添加一個新索引列的名稱。其他選項包括:名稱,:唯一的(例如{ :name =>「users_name_index」,:unique => true})和:order(例如{ :order => {:name =>:desc}})。

另外請記住,我不是說你應該創建這些索引,它們只是例子。你必須從你的查詢看到在where子句

我還沒有找到有關文檔索引的任何良好的信息發生的事情,但在這裏似乎是一個不錯的文章就可以了http://tomafro.net/2009/08/using-indexes-in-rails-index-your-associations

+0

- 謝謝你的幫助。我會添加索引,看看它是否有幫助。 postgresql在同一個虛擬主機上,它只是安裝。數據庫中少於10個條目 –

相關問題