LoginSignup
12
12

More than 5 years have passed since last update.

Railsの重い処理を見つける

Last updated at Posted at 2015-10-22

重い処理を見つけたい時のメモ。

監視サービス利用

パフォーマンス監視サービス

New Relic
https://newrelic.com/

遅いレンダリング箇所などが分かりやすいです

logファイルから

※前置き

念ためlogファイル分割

行数調べる

$ wc -l development.log

行数から分割したいサイズの行で指定

$ split -l 10000 development.log develop_20XX-XX-XX_

すると
develop_20XX-XX-XX_aa
develop_20XX-XX-XX_ab …
と ファイル名がアルファベット名を順に分けて分割される

念ため半角スペース統一

$ sed 's/[[:blank:]][[:blank:]]*/ /g' develop_20XX-XX-XX_aa > develop_20XX-XX-XX_aa_sed

念ためsortしたいruntime:位置がずれないように区切り文字(sort -t '%'ができるよう)に置換える

$ sed 's/runtime: /%/g' devlog_20XX-XX-XX_aa_sed > devlog_20XX-XX-XX_aa_sed_runtime

mongo DB runtime 長い順に

$ grep "MOPED:" develop_20XX-XX-XX_aa_sed | sort -bnr -k 13 | head -15

Render 遅い順に

grep "Rendered" devlog_20XX-XX-XX_aa_sed | sort -b -t '(' -k 2nr,2 | head -15

※参考
Railsのproductionログから処理に時間がかかっている部分を探す - 元RX-7乗りの適当な日々
http://d.hatena.ne.jp/rx7/20080930/p2

※sort オプションの詳しい参考
CodeZine(コードジン)
http://codezine.jp/unixdic/w/sort

ShellScript - sortコマンド、基本と応用とワナ - Qiita
http://qiita.com/richmikan@github/items/cc4494359b1ac2f72311

※sed
Linuxコマンド集 - 【 sed 】 文字列の置換、行の削除を行う:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230879/

細かい処理時間を rails console で計測

Benchmark.realtime do
  # 処理
end

その時によって違うので、複数回試して、平均をみる

※参考
Rails - Rubyで処理の時間計測方法 - Qiita
http://qiita.com/yakiimo23/items/7293c7606c1d59501d89

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12