web-dev-qa-db-ja.com

.NetエージェントをインストールするだけでNewRelicはどのように機能しますか?

昨日、 NewRelic 試してみることにしました。無料アカウントにサインアップし、.Netエージェントをインストールして、指示に従ってIISを再起動しました。すぐに、このエージェントはダッシュボードに次のような豊富な情報を表示し始めました。

  • 最も遅いSQLステートメント
  • 実行に最も時間がかかるメソッド
  • 最も頻繁にアクセスされているページ

.Net Agentをインストールするだけで、上記およびその他の多くのことをどのように行うことができますか?実際のアプリケーションのパフォーマンスが心配です。以前は、コンパイルされたDLLを変更することでアプリケーションの速度を大幅に低下させるプロファイリングツールを使用していました。ただし、このツールは何も変更していないようです。

私はまだこのすべての情報が何を意味し、これが実際にどのように役立つかを理解する必要がありますが、それは私にはかなり「魔法」に見え、エージェントを実行したままにしてダッシュボードに情報をアップロードすることにパフォーマンスの影響があるかどうか心配しています。

7
Karl Cassar

New Relicは、.NetプロファイリングAPIを使用していると述べています。

https://docs.newrelic.com/docs/dotnet/new-relic-net-installation#trouble

.NETエージェントは、BCI(バイトコードインジェクション)を使用してアプリケーションとシステムコードを計測します。これは、New RelicエージェントをCLR(共通言語ランタイム)に「プロファイラー」として登録することで実行されます。 CLRは、コードがロードされると.NETエージェントを呼び出し、興味深いメソッド呼び出しの場合、エージェントはコードをインストルメントします。

8
steve cook

New Relic .NET Agentと従来のプロファイリングツールの主な違いは、New Relic .NET Agentがインストルメントしないことですすべて。 New Relicの開発者は、さまざまなフレームワーク(ASP.NETなど)およびライブラリ(SQL Serverなど)の主要なメソッドを調べて選択し、エージェントはそれらのメソッドにのみコードを挿入します。従来のプロファイラーはコードをすべてに挿入します。これが、一般的にアプリケーションの速度を低下させる理由です。 New Relicは、コードを選択的に挿入することで、オーバーヘッドを低く抑えながら、アプリケーションの興味深い部分についての洞察を得ることができます。

4
Micah Zoltu