Railsアプリのパフォーマンスモニタ 「New Relic」を入れてみた

弊社サバゲ〜るの開発では以前、開発環境にFiveRuns TuneUpをインストールしてみたことがあり、これは便利だ是非活用しようと思ったまま、なかなか手つかずの状態になっていました。


FiveRuns TuneUpとは、Railsアプリケーションのパフォーマンスチューニングに役立つ情報を、グラフィカルに表示してくれるプラグインです。


今回、久々にブログ更新しようと思って真っ先に思いついたのがそのFiveRuns TuneUpネタでした。活用方法を調べようと思い、FiveRunsの本家サイトを見たら、

d20e34ade5bd968cdb7e286272267952.png

Workthinkなる会社に買収されたよ、今ははそっちで新しい製品を作っているよ
・「DASH」というサービスは終了するのでデータをエキスポートしてね


と掲示されているページだけがあり、TuneUpプラグインはどうなるのかとか、それまで提供していたサービスについては言及されていません。。


TuneUpはあきらめ、類似サービスを調べたところ、masuidriveさんも利用しているという、New Relicが良さげということが分かりました。
New Relicも TuneUp と同様に Railsアプリケーションにプラグインをインストールし、そのプラグインがNew Relic側にデータを送信し、蓄積するという仕組みです。


料金体系は以下の通りです。今回はお試しということでLiteアカウントを選択してみます。


17e53e03470d2d3a3e37154801deb04c.png

Free subscribeをクリックし、必要情報を入力し、Submitします。
しばらくすると入力したメアドにメールが届くので、URLをクリックしアクティベーションを行います。


アクティベーション後

アクティベーション後、Home(Myページ)にプラグインのインストール方法が載っています。ページ上部に小さくRPM Version2が出てるよと表示されているので、せっかくなのでそれにしてみます。


データ取得前HOME.png

掲載されているとおりに手元の開発環境をセットアップします。


1. Railsアプリケーションにプラグイン(Agent)を入れる

[masayuki@dev_svgr_jp /var/local/projects/svgr.jp]$ script/plugin install http://newrelic.rubyforge.org/svn/newrelic_rpm --force
+ ./CHANGELOG
+ ./LICENSE
+ ./README.md
+ ./Rakefile
+ ./bin/mongrel_rpm
+ ./bin/newrelic_cmd
+ ./cert/cacert.pem
+ ./init.rb
+ ./install.rb
+ ./lib/new_relic/agent/agent.rb
+ ./lib/new_relic/agent/chained_call.rb
-- 略 --

このプラグインが定期的に性能データをNew Relic側に送信するようです。


2. config/newrelic.yml を作成する
HOMEからnewrelic.ymlをダウンロードし、configディレクトリに置きます。デフォルトではproduction / staging環境のみ有効になっているので、developmentでも有効になるよう、172行目を trueにします。


3. Railsアプリを再起動する
さて、サクッとインストールできたようなので、データが蓄積されるまで開発環境をいじっておきます。
10分ほどいじった後、New Relicを見てみます。


おお! どうやらデータが取得できているようです。

データ取得完了HOME

My Applicationをクリックすると、概要が表示されます。
MyApplication.png

この画面で確認できるのは、以下の通り
  • 平均レスポンスタイム(Ruby / DB)
  • Apdexスコア

    Apdex(Application Performance Index)とは、アプリケーションの性能を定義する標準的な指標とのこと。

    詳しくは、こちらを参照。
  • スループット(request per minute ?)
  • ホスト毎のCPU使用率、メモリ使用量
  • 直近のイベントノート(コメント)、デプロイ履歴など


なお、Overview以外の下記のタブは、Bronzeアカウント以上でないと見ることができません。
  • Web Transaction
  • Database
  • Transaction Traces
  • Errors


取得したデータには、ノート(コメント)が書け、それを共有することができます。
note.png

まとめ

FiveRuns TuneUpでは、RailsアプリのMVC毎に何ms時間が掛かっているか棒グラフで表示する非常にシンプルな機能だったのですが、New Relicは(というよりFreeアカウントでは)そこまでは提供されないようです。 Ruby全体のレスポンス、ホスト毎のCPU使用率、メモリ使用量やApdexスコアにより、FiveRunsより大きな粒度でアプリケーションの性能を確認できます。


注意すべき点としては、動作環境がproductionかつ1分おきにデータを取得するので、Amazon EC2など従量課金の場合でトラフィックが多いアプリケーションの場合はデータ転送量に注意が必要です。


Railsアプリは遅いと諦める前に、どこがボトルネックなのかを見える化し、チューニングを施す。これらを簡単に行えるツールは今後も需要があるのではないでしょうか。

WebDAV経由でsvnリポジトリにコミットできなくてハマった

サーバ側でリポジトリを作成し、作業ディレクトリにチェックアウトまではできるが、作業ディレクトリからコミットできない現象に遭遇しました。


その時のクライアント側のログ:

$ svn add hoge.txt

A hoge.txt

$ svn commit hoge.txt

Log message unchanged or not specified

a)bort, c)ontinue, e)dit

c

svn: Commit failed (details follow):

svn: Can't open activity db: No such file or directory
ファイルが見つからないってどういうこと?



サーバ側のログ (Apacheのerror_log):
[Wed May 27 14:28:14 2009] [error] [client 202.218.216.13] Could not create activity /repos/tmprepo/!svn/act/c41a20c5-6b08-4c73-9da5-e41a2da69086. [500, #0]
[Wed May 27 14:28:14 2009] [error] [client 202.218.216.13] could not open dbm files. [500, #2]
[Wed May 27 14:28:14 2009] [error] [client 202.218.216.13] Can't open activity db: No such file or directory [500, #2]
どうやらsvnの管理情報が書けないエラーのようです。


「Could not create activity」でググってみると、
どうやらリポジトリ直下にdavディレクトリを作成しなければならないらしい。

mkdir /path/to/repo/dav


しかし、別件で作成したリポジトリはそんなことしなくても良かったのになと思ったので、もしかしたらsubversionのバージョンによってリポジトリの構造が違うのかもと思ったら、やっぱりそうらしいです。

After some time searching around for others that had encountered this error, I was able to determine that the problem was that version 1.5 of the svnadmin create command doesn’t create a “dav” directory in the repository, unlike earlier versions.

via: subversion ‘can’t open activity db’| johngirvin.com


1.5から dav/ディレクトリは作られなくなったので手動で作成しろと。。

また同じようにハマりそうなのでエントリ書きました。

でも、もうちょっと気が利いたエラーメッセージにして欲しかったな。

GANREF開発者の7つ道具(ソフトウェア&利用サービス編)

前回に引き続き、GANREF開発時に使用していた道具をご紹介します。
今回は、ソフトウェア&利用サービス編です。


続きを読む…

Page 1 of 812345...Last »