2011-12-23 10 views
8

シンプルな問題ですが、私は従来のRails 2.3アプリケーションを持っており、何かをするにはかなり時間がかかります。 rakeは25秒以上かかりますが、実際に何かが起きているようには見えません。Railsアプリケーションの起動をプロファイルするにはどうすればよいですか?

アプリがロードされてから、どのメソッドが最長時間を取るかを知るために、何らかのプロファイラダンプを取得するだけの簡単な方法はありますか?

Rails 2.3と3.1の両方のソリューションがさらに役立ちます。

+0

あなたはどちらのRubyを使用していますか? – rkb

+0

@rkb現在REEですが、プロファイルには他のバージョンを使用できます。すべての宝石は1.9互換です。 –

答えて

1

プロファイラを使用してアプリケーションを起動することができます。 ruby-profまたはperftools.rb。まだ起動している間に、アプリケーションが起動するとすぐにGET/kill_meの経路を試行するHTTPクエリを起動します。 /kill_meは、exitを呼び出すことによって、アプリケーションが正常に終了する可能性があります。その結果、スタートアップのプロファイルが得られます。

9

このような何か、レールの環境を必要とrakeタスクプロフィール:それはは2.3しかテストしたレールで動作するようにべきルビー-profの持つプロファイル

ruby -Ilib -S ruby-prof -p graph_html `which rake` loadit > profile.html 

その後、

desc "Load it" 
task :loadit => :environment do 

end 

それは3.xではありますが、私はそれがうまくいかない理由はありません。

+2

'rake environment'は、Rails環境をロードするタスクです。 – rkb

+0

ああ、レイク環境だけでなく、FooModel.allなどのレーキタスクでいくつかの方法を試してみたいと思うかもしれません。 – sunkencity

関連する問題