シンプルな問題ですが、私は従来のRails 2.3アプリケーションを持っており、何かをするにはかなり時間がかかります。 rake
は25秒以上かかりますが、実際に何かが起きているようには見えません。Railsアプリケーションの起動をプロファイルするにはどうすればよいですか?
アプリがロードされてから、どのメソッドが最長時間を取るかを知るために、何らかのプロファイラダンプを取得するだけの簡単な方法はありますか?
Rails 2.3と3.1の両方のソリューションがさらに役立ちます。
シンプルな問題ですが、私は従来のRails 2.3アプリケーションを持っており、何かをするにはかなり時間がかかります。 rake
は25秒以上かかりますが、実際に何かが起きているようには見えません。Railsアプリケーションの起動をプロファイルするにはどうすればよいですか?
アプリがロードされてから、どのメソッドが最長時間を取るかを知るために、何らかのプロファイラダンプを取得するだけの簡単な方法はありますか?
Rails 2.3と3.1の両方のソリューションがさらに役立ちます。
プロファイラを使用してアプリケーションを起動することができます。 ruby-profまたはperftools.rb。まだ起動している間に、アプリケーションが起動するとすぐにGET
/kill_me
の経路を試行するHTTPクエリを起動します。 /kill_me
は、exit
を呼び出すことによって、アプリケーションが正常に終了する可能性があります。その結果、スタートアップのプロファイルが得られます。
このような何か、レールの環境を必要と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ではありますが、私はそれがうまくいかない理由はありません。
'rake environment'は、Rails環境をロードするタスクです。 – rkb
ああ、レイク環境だけでなく、FooModel.allなどのレーキタスクでいくつかの方法を試してみたいと思うかもしれません。 – sunkencity
あなたはどちらのRubyを使用していますか? – rkb
@rkb現在REEですが、プロファイルには他のバージョンを使用できます。すべての宝石は1.9互換です。 –