こんにちは。H.Tと申します。
今年の1月よりGMOソリューションパートナーからGMOアドマーケティングに転籍となりました。
アドマではAkaNe管理画面の開発を担当することになりRails漬けの毎日を過ごしております。
今回は画面のパフォーマンス調査をする機会がありrack-mini-profilerを使ってみたので簡単にご紹介できればと思います。
rack-mini-profilerは手軽にRuby on Railsのパフォーマンス計測ができるgemとなります。
使い方の詳細については下記の通りです。
インストール
ローカルなどの開発環境で使う前提の場合は下記のインストールですぐに使えます。
1 |
gem 'rack-mini-profiler' |
もし環境によって適用を変更したい場合などは下記のように「require: false」オプションをつけて初期化ファイルを作成する必要があります。
1 |
gem 'rack-mini-profiler', require: false |
1 |
bundle exec rails g rack_profiler:install |
コマンド実行により下記の初期化ファイルが生成され、
この状態で使えるようになりますが必要であれば適宜変更します。
1 |
config/initializers/rack_profiler.rb |
1 2 3 4 5 6 7 8 |
# frozen_string_literal: true if Rails.env.development? require "rack-mini-profiler" # initialization is skipped so trigger it Rack::MiniProfilerRails.initialize!(Rails.application) end |
また、メモリの使用状況などはオプションのライブラリをインストールして確認することができます。
1 2 3 4 5 6 |
# For memory profiling gem 'memory_profiler' # For call-stack profiling flamegraphs gem 'flamegraph' gem 'stackprof' |
画面の見方
早速パフォーマンス計測した画面を見てみたいと思います。
計測したいページを表示すると左上にリクエストを送ってからページが表示されるまでの時間(ms)が表示されます。
秒数のところをクリックすると内訳が表示されます。
上部にサーバ側の処理の内訳、下にクライアント側の計測数値が表示されます。
中央右に「4.9% in sql」とあり、サーバ処理時間の4.9%をsql処理が占めていることがわかります。
「show time with children」をクリックすると処理ごとに纏った秒数が表示されます。
「show trivial」をクリックするとclient eventの内訳が表示されます。
こちらは「〇〇sql(〇〇はSQLが発行された数)」をクリックしてSQLの詳細を表示しているところです。
スロークエリは背景が濃いピンク、薄いピンクなどに変わるのでわかりやすくなります。
「more」をクリックするとオプション機能のhelpを確認できます。GETパラメータでオプション機能を使うことができます。
最後に、「share」をクリックすると全ての情報が展開された形で一枚のHTMLになるので保存してエビデンスとして残しておくなどできます。
以上、簡単ではありますがrack-mini-profilerの使い方でした。