日々精進

新しく学んだことを書き留めていきます

Rails - Advanced Railsのパフォーマンスチューニング技法1

Advanced Rails

Advanced Rails

↑のChapter 6. Performanceについてのまとめ。
引用部分の著作権は原作者に帰属します。
1.原則
・パフォーマンスより可読性を優先すべし
・処理に時間がかかっている部分を最適化すべし
・変更の前後で測定すべし


2.ブラックボックステスト
統計学
測定結果の標準偏差と95%信頼区間をチェックしよう。
Zed Shawのhttperfについてのドキュメントを読むべし(この記事はMongrelインスタンスの数を最適化する手順について書いてあるのでPassengerを使っている場合はあまり関係ないかも。)
Railsを通さずにWebサーバから静的ファイルを返した場合のパフォーマンスを計測すること。これがRailsのパフォーマンスの上限になる。
・ネットワーク遅延の影響を排除するためにサーバからネットワーク的に近いマシンからテストを実行すること
・測定結果が不正確になる可能性が高いので計測ソフトはWebサーバでは実行しないこと
・Benchmark.bmbmを使うとRubyコードのパフォーマンスが計測できる
Railsのパフォーマンス計測ツール
Production log analyzer:ログを整形してくれるソフトだけど、使い方がめんどそうなのでパス
Action profiler:あるアクションのプロファイリングをしてくれる
Railsアプリのロジックを最適化することは難しいことがある。処理に時間がかかっているのがframeworkの中だとチューニングが難しいから。
Rails Analyzer Tools:httperfと似たようなソフト。httperfがあるので使う必要はないが、Toolの一つのrails_statはログを整形しながら更新してくれるのでtail -f production.logの代わりに使うと便利。
script/performance/request:Rails2.0から追加されたパフォーマンス測定ツール。任意のリクエストのパフォーマンスを測定できる

アルゴリズムの改良方法
呼び出し回数の削減とか。アプリに依存するので一般的な方法論はないっぽい。