弊社サバゲ〜るの開発では以前、開発環境にFiveRuns TuneUpをインストールしてみたことがあり、これは便利だ是非活用しようと思ったまま、なかなか手つかずの状態になっていました。
FiveRuns TuneUpとは、Railsアプリケーションのパフォーマンスチューニングに役立つ情報を、グラフィカルに表示してくれるプラグインです。
今回、久々にブログ更新しようと思って真っ先に思いついたのがそのFiveRuns TuneUpネタでした。活用方法を調べようと思い、FiveRunsの本家サイトを見たら、
・Workthinkなる会社に買収されたよ、今ははそっちで新しい製品を作っているよ
・「DASH」というサービスは終了するのでデータをエキスポートしてね
と掲示されているページだけがあり、TuneUpプラグインはどうなるのかとか、それまで提供していたサービスについては言及されていません。。
TuneUpはあきらめ、類似サービスを調べたところ、masuidriveさんも利用しているという、New Relicが良さげということが分かりました。
New Relicも TuneUp と同様に Railsアプリケーションにプラグインをインストールし、そのプラグインがNew Relic側にデータを送信し、蓄積するという仕組みです。
料金体系は以下の通りです。今回はお試しということでLiteアカウントを選択してみます。
Free subscribeをクリックし、必要情報を入力し、Submitします。
しばらくすると入力したメアドにメールが届くので、URLをクリックしアクティベーションを行います。
アクティベーション後、Home(Myページ)にプラグインのインストール方法が載っています。ページ上部に小さくRPM Version2が出てるよと表示されているので、せっかくなのでそれにしてみます。
掲載されているとおりに手元の開発環境をセットアップします。
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を見てみます。
おお! どうやらデータが取得できているようです。
My Applicationをクリックすると、概要が表示されます。
この画面で確認できるのは、以下の通り
- 平均レスポンスタイム(Ruby / DB)
- Apdexスコア
Apdex(Application Performance Index)とは、アプリケーションの性能を定義する標準的な指標とのこと。
詳しくは、こちらを参照。 - スループット(request per minute ?)
- ホスト毎のCPU使用率、メモリ使用量
- 直近のイベントノート(コメント)、デプロイ履歴など
なお、Overview以外の下記のタブは、Bronzeアカウント以上でないと見ることができません。
- Web Transaction
- Database
- Transaction Traces
- Errors
取得したデータには、ノート(コメント)が書け、それを共有することができます。
まとめ
FiveRuns TuneUpでは、RailsアプリのMVC毎に何ms時間が掛かっているか棒グラフで表示する非常にシンプルな機能だったのですが、New Relicは(というよりFreeアカウントでは)そこまでは提供されないようです。 Ruby全体のレスポンス、ホスト毎のCPU使用率、メモリ使用量やApdexスコアにより、FiveRunsより大きな粒度でアプリケーションの性能を確認できます。注意すべき点としては、動作環境がproductionかつ1分おきにデータを取得するので、Amazon EC2など従量課金の場合でトラフィックが多いアプリケーションの場合はデータ転送量に注意が必要です。
Railsアプリは遅いと諦める前に、どこがボトルネックなのかを見える化し、チューニングを施す。これらを簡単に行えるツールは今後も需要があるのではないでしょうか。
前回のエントリからだいぶ時間が経ってしまいました。
ずっとブログを書かないでいると、いろいろ考えすぎて余計書けなくなってしまうものですね。
さて、ブログ休止期間中に開発をさせていただいたGANREF(ガンレフ)もリリースでき、
今ようやく一段落した感じです。
株式会社あくしゅさんと開発したGANREF。
メンバーのスキルの高さもさることながら、それぞれの開発スタイルがとても刺激になりました。
今回から2エントリは、GANREFプロジェクトの総括の意味で、開発メンバが利用していた環境やツール、その活用方法をご紹介したいと思います。今回はハードウェア/周辺環境編です。
1. PC
僕はMacbook Pro 15inch + Dell 24インチディスプレイで作業しています。メモリを3Gに増設し、最近128GBのSSDにしました(SSDによるパフォーマンス改善については別エントリで書く予定です)。
XAMPP for Macを入れてLAMP環境をさくっと構築。VMWareを起動してIE6のチェックをするときにはさすがに重いですが、そのほか開発作業については全く不自由してません。
2. キーボード&マウス
あくしゅのお二方に影響され、HHK Professional 2を使用しています。最初はオモチャみたいで馬鹿にしていましたが、今はこれがないとコードが書けませんw。カーソルキー操作に癖がありますが、時間が解決してくれます。
それまではMicrosoftのどでかいキーボードとロジクールのワイヤレスマウスを使用していました。たまにマウスが認識されないときがあり、そのたびイラっとして集中力が切れることがありました。その後有線マウスに交換しました。
3. 椅子
開発が始まって1ヶ月経過した頃から、メンバー全員に首と背中が痛む症状に見舞われました。原因はおそらく椅子のせいだと思われたので、自宅で使用していたアーロンチェアをプロジェクトルームに搬入しました。あくしゅのお二人もアーロンチェアを購入されていました。
1日の大部分を座って過ごすプログラマは、体型にあった椅子を選ぶべきです。無理な姿勢で長時間過ごすと必ず体を痛めます。
4. ホワイトボード
設計について議論しているとき、言葉のやりとりだけでは伝わらないときがあります。幸いプロジェクトルームの片側一面はホワイトボードになっており、ディレクトリ構成やデータモデルのつながりなどを共有するときはポンチ絵を書いていました。
5. ラジオ
黙々とコードを書いてばかりだと気が滅入るので、半袖野郎さんの提案によりFMラジオを流していました。それにより13時の時報を合図に昼飯に出かける良いリズムが生まれました。
6. プロジェクトルーム
常駐先では開発関係者のみ利用できるプロジェクトルームをご用意頂きました。とても静かで集中できる環境でした。
7. うまい飯
常駐先にはおいしいランチのお店が結構ありました。以下にいくつか紹介します。
–
以上、無理矢理7個に収めた感がありますが紹介させていただきました。
仕事に集中できる環境は大事ですね。
みなさまのご参考になればと思います。
次回はGANREF開発者の7つ道具 ソフトウェア/サービス編をお届けします。
お楽しみに。