オススメのRailsプロファイリングツール

2008年のFiveruns TuneUpに始まり、いくつものRails Profilerが生まれ、なくなり、またはまだ残ってはいるがゾンビ状態のようなものもある。2017年現在、信頼できるRails プロファイラを見つけることは、想像以上に難しかったです。下記が、私がまとめたRailsプロファイラの2017年番エコシステムのまとめになります。(何ができるか、できないか、そして、特別な機能は何か)

rack-mini-profiler

miniprofiler

名前に”mini”を含む一方で、実際はかなり機能豊富なプロファイラがrack-mini-profilerである。rack-mini-proflierは、databaseコールを計測し、flamegraph付きでcallstackをプロファイルし、そしてメモリに関係するメトリックもいくつか提供します。

rack-mini-profilerは、Rails 4とRails 5のアプリに対して、問題なく簡単に利用することができました。

rack-mini-profiler 強み

rack-mini-profiler 弱み

DevTrace

devtrace

DevTrace はScoutの無料で使えるRailsプロファイラで、scout_apm gemに含まれています。DevTraceは、Scoutが提供するものと同レベルのTraceを提供します。View Rendering, DBコール、そしてmemory allocation

Scoutのstack profilerであるScoutProfと一緒に実行すると、カスタムコードもプロファイリングすることができます。

DevTrace もrack-mini-profilerと同様、問題なく簡単に利用することができます

DevTrace 強み

DevTrace 弱み

Rails Panel

rails panel

Ruby gemとChromeのextensionを使った、Rails PanelはChromeのdeveloper panelからリクエストの詳細を確認できます。Rails Panelは、ActiveRecordとrenderingを計測します。

Rails Panel 強み

Rails Panel 弱み

使うのに苦労したProfilers

どのprofiler使うべき?

rack-mini-profilier、DevTrace、そしてRails Panelがエラーなく実行することができた一方で、それだけでは決められないと思うので、下記がそれぞれのプロファイラの良い点になります。

rack-mini-profiler

多くの計測データに対して、抵抗はありますか?このツールは、とてもたくさんのデータを開発者に提供するので、そういったものに抵抗のないエンジニアには、rack-mini-profilerは、ピッタリのプロファイラだと思います。

また下記2つの条件においては、rack-mini-profilerが唯一の選択肢になります:

  1. Non-Rails apps (ex: Sinatra)
  2. production 環境で実行したい場合

DevTrace

Dumpされたdataからパフォーマンスメトリックをフィルタリングすることに価値を見出せますか?DevTraceはデータを抽出するようにできています。rack-mini-profilerのように、timing, memoryを提供しますが、よりコンパクトにまとまった結果を見ることができます。

Rails Panel

粒度は少し荒いかもしれませんが、よりシンプルなTraceを見たい場合は、Rails Panelが適しているかもしれません。

こちらも参考に

DevTraceを含めたScoutに興味が湧いた方!

こちらからプロダクトデモの予約、またはsupport@scoutapm.comまでご連絡ください。

Railsのパフォーマンス改善に興味がある方、すでに使っているAPMがあるが、使いにくい・コストが高いと感じている方など、お問い合わせお待ちしております

doggo-hunter.png

ここまで、閲読頂きありがとうございます!犬のイラストをクリックしていただきますと無料でScout関連商品をお届けします