Railsアプリの計測用gemで有名なrack-mini-profilerのインストール方法および利用方法について紹介します。
目次
rack-mini-profilerで計測できること
rack-mini-profiler
は、画面が表示されるまでに実行されたメソッドとその処理時間を計測します。
具体的には以下の計測ができます。
- レスポンスの時間
- レンダリング(view)の時間
- アクション(controller)の時間
- SQLの実行回数
- SQLの実行時間
rack-mini-profilerのインストール手順
rack-mini-profiler
のインストール手順について紹介します。
gemの追加
gemをインストールします。
Gemfile
group :development do
gem 'rack-mini-profiler'
end
$ bundle
参考: rack_mini_profilerの起動方法をカスタマイズしたい場合
イニシャライザファイルを作成することでrack_mini_profiler
の起動方法をカスタマイズできます。1
たとえばrack-mini-profilerをGemfileに入れるときは require: false しようでは、rack-mini-profiler
の設定有無を判定する環境変数を用意し、『有効なら起動、無効なら起動しない』という制御をイニシャライザファイルで行っています。
イニシャライザファイルを利用する場合のrack_mini_profiler
のインストール方法は以下の通りです。
Gemfile
### require: falseを設定する
group :development do
gem 'rack-mini-profiler', require: false
end
### rack-mini-profiler をインストール
$ bundle
### config/initializers/rack_profiler.rb の作成
$ rails g rack_profiler:install
Running via Spring preloader in process 380
create config/initializers/rack_profiler.rb
rails g rack_profiler:install
実行後、以下のファイルが自動で作成されます。
config/initializers/rack_profiler.rb
# frozen_string_literal: true
if Rails.env.development?
require "rack-mini-profiler"
# initialization is skipped so trigger it
Rack::MiniProfilerRails.initialize!(Rails.application)
end
(任意) rack-mini-profilerの機能拡張をする
gemを追加することでrack-mini-profiler
の機能を拡張できます。
メモリの計測をしたい場合はmemory_profiler、計測結果をグラフ表示したい場合はstackprofとflamegraphをインストールします。
Gemfile
group :development do
gem 'rack-mini-profiler'
# For memory profiling
gem 'memory_profiler'
# For call-stack profiling flamegraphs
gem 'stackprof'
gem 'flamegraph'
end
$ bundle
rack-mini-profilerの利用方法
rack-mini-profiler
をインストール後、任意の画面にアクセスすると画面左上に計測時間が表示されます。
計測結果の表示・非表示はoption + p
で行えます。

計測時間をクリックすると詳細情報が確認できます。
詳細画面では、『リクエスト時間』『レンダリング(view)の時間』『アクション(controller)の時間』の確認ができます。また、各ロジックで実行されているSQLの詳細も確認できます。

flamegraph
とstackprof
をインストール後、?pp=flamegraph
のクエリパラメータを追加すると計測結果をグラフで確認できます。
たとえばlocalhost:3000/students
の計測結果をグラフ表示したい場合はlocalhost:3000/students?pp=flamegraph
となります。結果は以下の通りです。

memory_profiler
をインストール後、?pp=profile-memory
のクエリパラメータを追加するとメモリのプロファイリング結果を確認できます。結果は以下の通りです。

rack-mini-profilerで利用できるクエリパラメータ
rack-mini-profiler
には先ほど紹介した?pp=flamegraph
や?pp=profile-memory
以外にもクエリパラメータのオプションが用意されています。主なクエリは以下の通りです。
クエリ | 内容 |
---|---|
pp=help | ヘルプページの表示 |
pp=flamegraph | 計測結果をグラフ表示 |
pp=profile-memory | メモリの計測結果を表示 |
pp=disable | 計測の無効化 |
pp=enable | 計測の有効化 |
オプションの一覧は[アプリの任意のURL]?pp=help
で確認できます。

pp=helpによるヘルプページ
まとめ
rack-mini-profiler
を利用することで『画面が表示されるまでにどのようなアクション・SQL・レンダリングが実行されているか、そしてその実行時間はどれくらいなのか』ということがわかります。
ですので、チューニング対象の当たりをつける際にrack-mini-profiler
は有効です。
チューニング対象の当たりがついており、行単位の詳細な計測がしたい場合はrack-rblineprofがオススメです。
rack-lineprof
を利用した計測手順についてはrack-lineprofを使ってRailsアプリを行単位でプロファイリングする手順で紹介していますのであわせてご覧になってください。