2

Heroku で Rails 3.0 アプリケーションを実行し、New Relic アドオン/サービスを使用しています。

アプリケーションのパフォーマンス特性についてもう少し理解するために、トランザクション追跡機能 (プロ版で利用可能) を調べてきました。ただし、時間のかなりの部分 (30 ~ 50%) は「インストルメント化されていない時間」です。method_tracers をいくつかの場所に配置していくつかの刺し傷を作成し、より多くの情報を取得できるかどうかをテストするためにかなり遅いサイクルを実行した後、これはどこにも速く進んでいないと感じています.

PHP の new relic エージェントには、メソッド トレーサーを配置する場所を推測する必要なく、非常に詳細なトレースを取得する優れた機能があるようです: http://newrelic.com/docs/php/php-agent-faq#top100

ルビーにこれに似たものはありますか?

注: 私はすでに rpm_contrib を使用して詳細情報を取得し、ガベージ コレクションの統計情報を有効にしています。また、これはパフォーマンスの問題を修正することではなく、利用可能なパフォーマンス ツールをより適切に使用する方法を理解し、その計測されていない時間についての小さな悩みを解決することです。

4

2 に答える 2

2

現在、Ruby に類似したものはありません。機会があれば、Ruby エンジニアにそのことを伝えます。よっぽどリクエストが来ない限り、しばらくはトップにはならないだろうけど。それまでの間、メソッド トレーサーを使用して、計測されていない時間を把握できます。

それが役立つことを願っています。

于 2011-12-16T17:01:51.233 に答える
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 トランザクション] タブのコントローラー アクションの [パフォーマンスの内訳] にも表示されるため、遅いリクエストだけでなく、すべてのリクエストでそのコード ブロックの平均時間が表示されます。 .

于 2011-12-16T19:02:22.017 に答える