ネットワーク パフォーマンス カウンター

パフォーマンス コンソール .NET CLR Networking カテゴリには、アプリケーションがネットワーク経由で送受信するデータに関する情報を提供するカウンターが含まれます。 これらのパフォーマンス カウンターについて、次の表で説明します。

パフォーマンス カウンター

説明

Bytes Received

プロセスの開始後に AppDomain 内のすべての Socket オブジェクトが受信した累計バイト数。 この数には、データおよび TCP/IP によって定義されていないプロトコル情報が含まれます。

Bytes Sent

プロセスの開始後に AppDomain 内のすべての Socket オブジェクトが送信した累計バイト数。 この数には、データおよび TCP/IP によって定義されていないプロトコル情報が含まれます。

Connections Established

プロセスの開始後に AppDomain 内で接続されていたストリーム ソケットの Socket オブジェクトの累計数。

Datagrams Received

プロセスの開始後に AppDomain 内のすべての Socket オブジェクトが受信したデータグラム パケットの累計バイト数。

Datagrams Sent

プロセスの開始後に AppDomain 内のすべての Socket オブジェクトが送信したデータグラム パケットの累計バイト数。

HttpWebRequest Average Lifetime

プロセスの開始後に AppDomain 内で最後の間隔で終了したすべての HttpWebRequest オブジェクトの平均完了時間。

HttpWebRequest Average Queue Time

プロセスの開始後に AppDomain 内で最後の間隔でキューに残ったすべての HttpWebRequest オブジェクトのキューでの平均待機時間。

HttpWebRequests Created/sec

AppDomain 内で 1 秒あたりに作成された HttpWebRequest オブジェクトの数。

HttpWebRequests Queued/sec

AppDomain 内で 1 秒あたりにキューに追加された HttpWebRequest オブジェクトの数。

HttpWebRequests Aborted/sec

AppDomain 内でアプリケーションが Abort メソッドを呼び出した HttpWebRequest オブジェクトの 1 秒あたりの数。

HttpWebRequests Failed/sec

AppDomain 内でサーバーから失敗したステータス コードを受け取った HttpWebRequest オブジェクトの 1 秒あたりの数。

解説

サポートされているネットワーク パフォーマンス カウンターのクラスを次に示します。

  • イベントが発生した回数を測定するイベント カウンター。

  • 送信または受信されたデータの量を測定するデータ カウンター。

  • 各種プロセスが実行される時間を測定する時間計測カウンター。 時間は、オブジェクトの状態が変わった後に、間隔 (通常は秒単位) ごとに計測されます。

  • 間隔 (通常は秒単位) ごとに特定の遷移を形成するオブジェクトの数を測定する間隔ごとのカウンター。

イベントのネットワーク パフォーマンス カウンターには、次のようなものがあります。

  • Connections Established

  • Datagrams Received

  • Datagrams Sent

これらのパフォーマンス カウンターは、プロセス開始後のカウントを提供します。 確立された Socket 接続のカウントには、確立されたストリーム ソケット接続用のアプリケーションによる Socket メソッド呼び出しと、その他のクラス (HttpWebRequestFtpWebRequestWebClientTcpClient など) による Socket クラスの内部呼び出しが含まれます。

Datagrams ReceivedDatagrams Sent のカウントには、アプリケーションによる明示的な Socket メソッド呼び出しで送受信されたデータグラム パケットと、その他のクラス (UdpClient など) による Socket の内部呼び出しが含まれます。 Datagrams Received および Datagrams Sent のカウントは、データグラムの平均的なサイズを推測することで、データグラムを使用して送受信されたバイトの数の概算を提供するためにも使用できます。

データのネットワーク パフォーマンス カウンターには、次のようなものがあります。

  • Bytes Received

  • Bytes Sent

これらのカウンターは、プロセス開始後のバイトのカウントを提供します。

HttpWebRequest オブジェクトが有効期間全体またはその一部を通過するのに要する時間を計測する時間計測カウンターには、次の 2 つがあります。

  • HttpWebRequest Average Lifetime

  • HttpWebRequest Average Queue Time

HttpWebRequest Average Lifetime カウンターの場合、大部分の HttpWebRequest オブジェクトの有効期間は、常に、オブジェクトが作成されたときに開始し、アプリケーションによって応答ストリームが閉じられたときに終了します。 ただし、例外的なシナリオが 2 つあります。

  • アプリケーションが GetResponse メソッドまたは BeginGetResponse メソッドの呼び出しを行わない場合、HttpWebRequest オブジェクトの有効期間は無視されます。

  • GetResponse メソッドまたは EndGetResponse メソッドを呼び出したときに HttpWebRequest オブジェクトが WebException をスローした場合、その例外がスローされたときに有効期間は終了します。 技術的には、基になる応答ストリームもその時点で閉じられます (ユーザーに返される応答ストリームは、実際には、応答ストリームのコピーを含むメモリ ストリームです)。

間隔ごとに特定の HttpWebRequest オブジェクトの動作を追跡するカウンターが 4 つあります。 これらのパフォーマンス カウンターは、アプリケーション開発者、管理者、およびサポート スタッフが、HttpWebRequest オブジェクトの動作をより的確に把握するのに役立ちます。 これらのカウンターは、次のとおりです。

  • HttpWebRequests Created/sec

  • HttpWebRequests Queued/sec

  • HttpWebRequests Aborted/sec

  • HttpWebRequests Failed/sec

HttpWebRequests Aborted/sec カウンターでは、Abort の内部呼び出しもカウントされます。 これらの内部呼び出しは、通常、一部のアプリケーションが測定するタイムアウトによって発生します。

HttpWebRequests Failed/sec カウンターには、サーバーから失敗したステータス コードを受け取った HttpWebRequest オブジェクトの 1 秒あたりの数が含まれます。 これは、要求の終了時に Http サーバーから受け取ったステータス コードが 200 ~ 299 の範囲内にないことを意味します。 ステータス コードが処理され、結果として新しい要求が発行されると (その多くは、401 Unauthorized ステータス コード)、ステータス コードは再試行の結果に基づいて失敗または成功します。 再試行においてアプリケーションにエラーがあると、このカウンターはインクリメントされます。

ネットワーク パフォーマンス カウンターにアクセスして管理するには、PerformanceCounter および System.Diagnostics 名前空間内の関連クラスを使用します。 ネットワーク パフォーマンス カウンターは、Windows パフォーマンス モニター コンソールでも参照できます。

ネットワーク パフォーマンス カウンターは、使用される構成ファイルで有効になっている必要があります。 すべてのネットワーク パフォーマンス カウンターは、構成ファイル内の 1 つの設定で有効または無効にされます。 ネットワーク パフォーマンス カウンターを個別に有効または無効にすることはできません。 詳細については、「<performanceCounters> 要素 (ネットワーク設定)」を参照してください。

ネットワーク カウンターが有効であると、per-AppDomain カウンターとグローバル パフォーマンス カウンターの両方が作成され、更新されます。 無効にすると、アプリケーションはどのネットワーク パフォーマンス カウンターのデータも提供しません。

パフォーマンス カウンターは、カテゴリ別にグループ化されます。 アプリケーションは、次のコードを使用して、すべてのカテゴリを一覧表示できます。

PerformanceCounterCategory[] Array = PerformanceCounterCategory.GetCategories();
for (int i = 0; i < Array.Length; i++)
{
    Console.Out.WriteLine("{0}. Name={1} Help={2}", i, Array[i].CategoryName, Array[i].CategoryHelp);
}

ネットワーク パフォーマンス カウンターは、次の 2 つのカテゴリに一覧表示されます。

  • ".NET CLR Networking" - .NET Framework Version 2 で導入され、.NET Framework Version 2 以降でサポートされている元のパフォーマンス カウンター。

  • ".NET CLR Networking 4.0.0.0" - 上に示したすべてのソケット カウンターと、.NET Framework Version 4 以降でサポートされている新しいネットワーク パフォーマンス カウンター。 これらの新しいカウンターは、HttpWebRequest オブジェクトに関するパフォーマンス情報を提供します。

アプリケーションでパフォーマンス カウンターにアクセスして管理する方法の詳細については、「.NET Framework のパフォーマンス カウンター」を参照してください。

参照

参照

<performanceCounters> 要素 (ネットワーク設定)

ランタイム プロファイリング

System.Diagnostics

その他の技術情報

.NET Framework のパフォーマンス カウンター