0

postgreSQLのラックスペースでRailsアプリを実行しています。

本当に遅いです。

特別なリクエストの場合、応答に最大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があります。そのうちの1つが問題(または他の何か)である可能性があります。そのため、パフォーマンスの問題を追跡するためのツールが必要です。

私が見る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未満のエントリがあります。これは、これらのビューにアクセスするコンピューターのインターネット接続が遅いことが原因である可能性がありますか?

4

2 に答える 2

2

おそらくあなたのPostgresqlデータベースサービスはがらくたですか、それともアプリサーバーから遠く離れていますか??

とにかく、インデックスを作成する必要があります。どのように?あなたの移行では

add_index :costumers, :firm_id

たとえば、複数の列を持つインデックスを追加することもできます

add_index :projects, [:user_id, :alive]

ここにすべてのオプションがありますadd_index

add_index(table_name, column_names, options): 列の名前で新しいインデックスを追加します。その他のオプションには、:name、:unique (例: { :name => "users_name_index", :unique => true }) および :order (例: { :order => {:name => :desc} }) があります。

また、これらのインデックスを作成する必要があると言っているわけではありません。これらは単なる例です。where句に何が入るかをクエリから確認する必要があります

ドキュメントのインデックスに関する良い情報は見つかりませんでしたが、ここに良い記事があるようですhttp://tomafro.net/2009/08/using-indexes-in-rails-index-your-associations

于 2012-11-10T00:58:16.073 に答える
1

問題はアセット パイプラインでした

プリコンパイルされていないcssおよびjsファイルがいくつかありました。エラー メッセージは表示されませんでしたが、正確な名前を付ける必要があります。いいえ "。" ファイル名に「.css」はありません

インデックス作成は役に立ちませんでした。ただし、データベースにエントリが増えると、パフォーマンスが向上する可能性があります。

于 2012-11-16T09:31:51.993 に答える