2011-12-16 12 views
2

私はHeroku上でNew Relicアドオン/サービスを使用して、レール3.0アプリケーションを実行しています。Ruby New Relicエージェントでより詳細なトランザクショントレースを取得するには

私はトランザクショントレース機能(プロバージョンで利用可能)を見て、アプリケーションのパフォーマンス特性についてもう少し理解しています。しかし、時間のかなりの部分(30〜50%)は、「計時されていない時間」です。 method_tracersをいくつかの場所に置き、適度に遅いサイクルを経てより多くの情報が得られるかどうかをテストすることで、いくつかのスタブを作成した後、私はこれがどこにもないと感じています。

彼らがどこ方法トレーサーを入れて推測することなく、非常に詳細なトレースを取得するための優れた機能を持っているPHPの新しい遺物エージェントに思える:http://newrelic.com/docs/php/php-agent-faq#top100

は、ルビーのために次のようなものはありますか?

注:すでにいくつかの情報を取得し、ガベージコレクションの統計情報を有効にするためにrpm_contribを使用しています。また、これはパフォーマンスの問題を修正することではなく、利用可能なパフォーマンスツールをより良く使いこなす方法を理解するだけでなく、計測されていない時間についてかゆみを感じることもありません。

+0

これまでのところ、Herokuでより詳細なトランザクショントレースを取得する最も良い方法は、https://github.com/rack/rack-contribの 'Rack :: Profiler'を使うことでした。 –

答えて

2

現在、Rubyには類似したものはありません。私はチャンスを得るとRubyのエンジニアに言及します。私の推測は、多くのリクエストが入ってこない限り、それはしばらくの間、リストの一番上にはないでしょう。その間、メソッドトレーサを使用して、計測されていない時間を調べることができます。

希望に役立ちます。

+1

情報をお寄せいただきありがとうございます。今後ルビー版でこの機能をご覧になりたいと考えています。 –

1

メソッドトレーサーうまく動作しますが、あなたは、コントローラのコードの多くを持っている場合は、コードのブロックに費やされる時間を記録しtrace_execution_scopedを使用してバイナリ検索を試すことができます。

http://newrelic.github.com/rpm/NewRelic/Agent/MethodTracer/InstanceMethods/TraceExecutionScoped.html#method-i-trace_execution_scoped

追加これに対していくつかの呼び出しを行い、各メトリックに「Custom/MySlowControllerAction/block0」(最初の引数はtrace_execution_scoped)のような分かりやすい名前を付け、繰り返します。

名前は、トランザクショントレースだけでなく、[Webトランザクション]タブの[コントローラのアクション]の[パフォーマンスの内訳]にも表示されます。そのため、すべてのリクエストにわたってそのコードブロックの平均時間が表示されます。遅いものだけ。

+0

情報をありがとう、私はその機能について知りませんでした。しかし、私が思うように、メソッド内で絞込みを行うとより効果的だと思いますが、開始点が要求レベルのほうが多い場合はそれほど重要ではありません。 –

+0

しかし、絞り込みを開始する方法はコントローラのアクションになる可能性がありますが、これは実行時間(キューイング、ミドルウェアなどを除く)の大半を占めることがよくあります。 – rkb

+0

これは良いスタートポイントとなることがあります。私の状況では、計器化されていない時間との関係で、Alchemist gemの使用によって引き起こされたBasicObject#method_missingの呼び出しに費やされた時間が判明しました。 Alchemistを使用して約5回のコンバージョンを行っていたとき、それはかなりグローバルな影響を与えました。コアオブジェクトのこの種の動的メソッドは、詳細なトレースがなくても追跡するのはかなり難しいです。 –

関連する問題