New Relicの .NET エージェントは、アプリケーションのパフォーマンスに関する .NET ランタイムからメトリクスを収集します。 これらのメトリクスは、アプリケーションが消費する CPU とメモリの量、およびアプリケーションのパフォーマンスがガベージ コレクションやスレッド プールのリソース競合によってどのような影響を受けるかをインサイトに提供します。
これらのメトリックはone.newrelic.com > All capabilities > APM & servicesで確認できます。 アプリケーションを選択してMore views > Dotnet VMsに移動します。
これらのメトリクスは、次の方法でも表示できます。
- カスタム ダッシュボードの作成。
- one.newrelic.com > All capabilities > APM & servicesのMetric explorerを使用してアプリケーションを選択し、 More viewsに移動します。
CPUメトリック
次の CPU メトリクスが収集されます。
| このプロセスによって消費される CPU の割合。 |
| プロセスがアプリケーション コードの実行に費やした時間。 |
メモリメトリック
次のメモリ メトリクスが収集されます。
| プロセスに割り当てられたプライベート (物理) メモリの量 (MB 単位)。 |
| プロセスに割り当てられた物理メモリの量。 |
ガベージコレクションのメトリック
.NET ガベージ コレクターはバックグラウンドで実行され、アプリケーションによって参照されなくなったオブジェクトに関連付けられたメモリを識別して再利用する役割を担います。 次のメトリクスは、オブジェクト割り当てのパターンと潜在的な過剰割り当てシナリオを特定するのに役立ちます。 この記事では、.NET におけるガベージ コレクションの基礎についてさらに詳しく説明します。
重要
.NET フレームワーク アプリケーションの場合、アプリケーションを実行する Windows ユーザーは、Windows パフォーマンス カウンター データにアクセスできる必要があります。 通常、これはユーザーをPerformance Monitor UsersおよびPerformance Log Usersグループに追加することによって実現されます。 権限が不十分な場合、エージェントはガベージ コレクション メトリクスを収集できません。
全体的な指標
さらに、次のガベージ コレクション メトリクスが収集されます。
| オブジェクトへの参照の数。 |
| 通常、ランタイムはガベージ コレクションを自動的に実行します。 このメトリックは、アプリケーション コード内から
を明示的に呼び出してガベージ コレクションが手動で呼び出された回数を識別します。 |
(.NETフレームワークのみ) | 最後のガベージ コレクション サイクル以降に .NET ランタイムがガベージ コレクションの実行に費やした経過時間の割合。 |
世代-0ヒープ
次のガベージ コレクション Gen0 メトリクスが収集されます。
| 第 0 世代で割り当て 可能な メモリの量 (MB 単位)。これは、第 0 世代で 使用され ているメモリの量を示すのではなく、割り当て可能な最大メモリ量を示します。 |
| ガベージ コレクションを生き残り、Gen0 から Gen1 に昇格されたメモリの量 (MB 単位)。 メモリは、アクティブな参照がある場合、ガベージ コレクションを生き残ります。 |
| ガベージ コレクターによって世代 0 のガベージ コレクションが実行された回数。 |
世代-1ヒープ
次のガベージ コレクション Gen1 メトリクスが収集されます。
| 第 1 世代ヒープ内で 使用される メモリの量 (MB 単位)。 これは、世代 0 ヒープに 使用可能な メモリの最大量を測定する
とは異なります。 |
| ガベージ コレクションを生き残り、Gen1 から Gen2 に昇格されたメモリの量 (MB 単位)。 メモリは、アクティブな参照がある場合、ガベージ コレクションを生き残ります。 |
| ガベージ コレクターによって第 1 世代ガベージ コレクションが実行された回数。 |
世代-2ヒープ
次のガベージ コレクション Gen2 メトリクスが収集されます。
| Gen2 ヒープによって 使用されている メモリの量 (MB 単位)。 |
(.NET Core のみ) | ガベージ コレクションを生き残ったメモリの量 (MB 単位)。 メモリは、アクティブな参照がある場合、ガベージ コレクションを生き残ります。 Gen0 および Gen1 とは異なり、ガベージ コレクションを生き残ったメモリは昇格され ません 。 |
| ガベージ コレクターによって第 2 世代ガベージ コレクションが実行された回数。 |
ラージオブジェクトヒープ(LOH)
次のガベージ コレクション LOH メトリクスが収集されます。
| ラージ オブジェクト ヒープ (LOH) によって 使用されている メモリの量 (MB 単位)。 .NET Core では、ラージ オブジェクト ヒープは Gen3 と呼ばれることもあります。 |
(.NET Core のみ) | ガベージ コレクションを生き残ったメモリの量 (MB 単位)。 メモリは、アクティブな参照がある場合、ガベージ コレクションを生き残ります。 Gen0 および Gen1 とは異なり、ガベージ コレクションを生き残ったメモリは昇格され ません 。 |
管理されたスレッドプールのメトリック
.NETランタイムは、スレッドのプールを管理します。次のメトリックは、スレッドプールの観点からアプリケーションのパフォーマンスを可視化し、スレッドプールが不足している領域を特定するのに役立つ場合があります。スレッドプールの枯渇/競合は、アプリケーションによって行われた要求を処理するために使用できる十分なスレッドがない場合に発生します。次の記事では、管理対象スレッドプールのさまざまな機能について説明します。これらのメトリックには、スレッドプールによって管理されていないスレッドに関する情報は含まれていないことに注意してください。
ワーカースレッド
ワーカースレッドは、プロセスに代わって作業を行うために採用される、CPUに拘束されたスレッドです。
| プロセスで使用可能な管理対象スレッドの数を識別します。 一貫して低い数値は、飢餓のシナリオの可能性を示しています。 |
| プロセスによって現在使用されているワーカー スレッドの数を識別します。 |
完了スレッド
I/Oスレッドとも呼ばれる完了スレッドは、I/Oオペレーションの完了を監視するために採用されます。
| このメトリックは、プロセスで現在使用可能なスレッドの数を識別します。 一貫して低い数値は、潜在的な飢餓シナリオを示唆しています。 |
| このメトリックは、プロセスによって現在使用されている完了スレッドの数を識別します。 |
スループット
スループットメトリクスは、別のスレッドで実行が要求された作業量、開始された作業量、スレッドプールのリソースが利用可能になるのを待っている作業量を測定します。
| 別のスレッド プールで管理されるスレッドで作業を実行するように要求された回数を識別します。 |
| 実行を開始した別のスレッドで実行するように要求された作業項目の数を識別します。 |
| 要求されているが開始を待機している作業項目の数を識別します。 数値が継続的に増加すると、スレッド プールの枯渇状態が発生する可能性があることを示します。 次の では、アプリケーションで使用できるスレッドの数を変更する方法について説明します。 |