Railsメモ(18) : rack-mini-profilerで簡単なパフォーマンスを計測する
多対多のリレーションがあるモデルに対してビューを変更したら大量のSQL文が実行されるようになったので、まず現状を確認してみる。
rack-mini-profiler
というgemを追加すると簡単なパフォーマンス計測ができるようになるのでこれを使用してみる。
Gemfile
に下記行を追加してbundle install
する。
gem 'rack-mini-profiler'
なお、デフォルトで有効になっていると問題があることもあるらしいので、その場合はrequire: false
する。
rack-mini-profilerをGemfileに入れるときは require: false しよう - Qiita
gem 'rack-mini-profiler', require: false
そして、config/initializers/rack_profiler.rb
に初期化コードを追加するらしい(試してはいない)。
if Rails.env == 'development' require 'rack-mini-profiler' # initialization is skipped so trigger it Rack::MiniProfilerRails.initialize!(Rails.application) end
rack-mini-profilerの使い方
アプリケーションを再起動すると図のように画面左上にページのロードにかかった時間が表示されるようになる。
そして、各計測結果をクリックするとさらに詳しい情報が表示される。
さらに、sqlの部分をクリックすれば実行したSQL文が確認できる。
現在はデータを100個ごとに表示しているが、そのデータそれぞれに対してSQL文を実行(合計102回も)していることが確認できた。このような問題は「N+1問題」と呼ばれており、この問題を検出するgemもあるので次ステップで改善してみる。
カール事務器 裁断機 ディスクカッター A4サイズ DC-200N
- 出版社/メーカー: カール事務器
- メディア: オフィス用品
- 購入: 1人 クリック: 3回
- この商品を含むブログ (2件) を見る