InfoQ: パフォーマンスモニタリングはどのように実装され、そのパフォーマンスインパクトはどんなものでしょうか。MRI以外ではRuby各バージョンの上でも動作するのでしょうか。
New Relicのエージェントは100% Rubyコードで実装されるため、ハードウェアとOSの組合せがいかなるものであっても、その組合せで存在するあらゆるRuby環境、あらゆるRuby VM実装で動作します。JRubyやRubiniusに加え、リファレンス実装も含まれます。Rubyの動的言語機能を使い、ControllerアクションやActiveRecordクエリなどの比較的重量級のオペレーションに、軽量級の「トレーサー」を配置します。InfoQ: New RelicはSaaSとして機能するという触れ込みですが、どのように実装されるのでしょうか。収集した情報を貴社のサービス宛にネットワークを介して送るのでしょうか。
比較的単純なコンセプトですが、実際上手くやるのは非常に難しいのです。幸い私たちには、Wily TechnologyのIntroscopeを構築したことにより、こうしたことにおける深い経験があります。Introscopeは企業のJavaプラットフォーム向けとして、業界をリードするアプリケーションパフォーマンス管理のソリューションです。こうしたアプローチを使ったお粗末なエージェントではアプリケーションのパフォーマンスや安定性に影響を与える可能性がありますが、私たちのエージェントならそのようなことはありません。テストによると、トランザクションのレスポンスタイムへの上乗せは2〜5ミリセカンド以下であり、CPU消費も非常に低くなっています(5%をはるかに下回ります)。それにもかかわらず、アプリケーションが何を行っているかについて、驚くほど奥の深いパフォーマンスデータを、ほぼリアルタイムで提供するのです。
事後にログファイルを分析するわけではないので、次のようなメリットがあります—低オーバーヘッドかつディスク/ioゼロでずっと高速に(毎分1回)このデータを報告することができます。—非常に深い視認性を獲得することができ、その視認性を容易にカスタマイズできます。—Rubyのメソッドなら、追跡可能です。—本番マシン上でリソースをデプロイしたり、維持したり、消費したりする追加のプロセスはありません。50のプライベートベータの顧客がプライベートベータでRPMを使用していますが、その多くが非常にハイボリュームのRailsサイトで、私たちのエージェント技術に関して問題を抱えているところはありません。
前述したエージェントは、毎分収集するパフォーマンスデータをNewRelic.comに報告しますが、顧客の好みによってhttpもしくはhttpsのいずれかを介して報告を送ります。このデータは、直観で理解できる様々なビューとして表示され、ライブのRailsアプリケーションでよく尋ねられる以下のようなパフォーマンス関連の疑問に答えます。InfoQ: New Relicが現時点で認識し、報告しているパフォーマンス問題はどういった種類のものでしょうか。粗悪なコーディングプラクティスや行方不明のキャッシングなどは発見されていますか。
- 最も遅いコントローラーアクションはどれでしょうか。
- 時間の経過とともに、そのパフォーマンスはどのように変化するのでしょうか。
- 特定のコントローラーアクションのレスポンスタイムは、どのように悪化していくのでしょうか。
- 最も頻繁にクエリされるActiveRecordオブジェクトは何でしょうか。最も頻繁に保存されるのはどれでしょうか。最も遅いActiveRecordファインダはどれでしょうか。
- 行方不明になっているインデックスはありますか。
粗悪なコーディングプラクティスと行方不明のキャッシングの2つは、素晴らしい例ですね。その他で頻繁に見られる例は、アプリケーションが緊密なループの中で多数の(かつ場合によっては迅速な)アクティブレコードのオペレーションを呼び出し、それが全体として多大なデータベース利用につながると、DBツールが稼働良好と表示したとしても、単一のクエリでもっと上手く作業できるところを多数のクエリを発行することにより、アプリケーションがDBを乱用しているかもしれません。コントローラーアクションによるmemcacheの使用も追跡しますが、これも高性能かつ高スケールのRailsサイトで共通して関心を集めている分野です。InfoQ: New RelicのユーザーとしてLighthouse(サイト・英語)を言及されましたが、Lighthouse以外に公表可能な顧客のリストはありますか。
まだプライベートベータの段階ですが、Railsコミュニティの「名士」と思われるようなところ多数に、ご利用いただいています。Lighthouseはその好例です。Rick Olson氏はRuby on Railsプラットフォームの中心的開発者の一人であり、Railsコミュニティの多作な貢献者として知られています。Olson氏から推奨を受けているということは、多くを意味すると私は考えます。InfoQ: ライセンスモデルあるいは価格構成はどのようなものをご計画ですか。
New Relicの大ファンとして公開できるその他の顧客には、Moku Gift(E-Treeを贈れば、Moku Giftが本当の木を植えます!)、Redeparede.com(非英語圏市場に焦点を当てたソーシャルネットワーキング)、Hutz.com(別荘レンタルのマーケットプレイス)があります。近い将来には顧客ベースからもっと推奨があると思うので、期待してください。
まだ特定の価格は発表していませんが、発表時には加入形式のサービスになり、顧客個々の管理環境の規模に応じた月額料金を支払っていただくことになるでしょう。
RubyInsideのNew Relicに関する記事は(source)、New Relic社が最近ベンチャー事業用に350万ドルの資金を調達したことにも言及しているが、RPM以外のパフォーマンス監視ソリューションとしてFiveRunによるRM-Manage(source)も指摘している。
Railsアプリケーションのパフォーマンスに関する一般的なヒントについては、ここInfoQでJames Coxのプレゼン「Managing a high performance Rails app without tearing your hair out」(頭を抱えることなくハイパフォーマンスなRailsアプリケーションを管理する(参考記事・英語))を見ることもできる。
原文はこちらです:http://www.infoq.com/news/2008/05/new-relic-rails-performance