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

ASP.NET は、システムとアプリケーションの 2 つのグループのパフォーマンス カウンタをサポートします。システム パフォーマンス カウンタは、ASP.NET パフォーマンス カウンタ オブジェクトとして Windows パフォーマンス モニタ内に公開されます。アプリケーション パフォーマンス カウンタは、ASP.NET Applications パフォーマンス オブジェクトとして公開されます。

Noteメモ :

各パフォーマンス カウンタに関連付けられた値は 400 ミリ秒ごとに更新されます。監視アプリケーションを作成する場合は、この時間を考慮して、古くなったカウンタ値をコードが使用しないようにします。詳細については、「システム監視コンポーネントの使用」を参照してください。

システムとアプリケーションのパフォーマンス カウンタの詳細については、「方法 : パフォーマンス カウンタのカテゴリを作成する」、「カテゴリおよびカウンタの管理」、および「方法 : カスタム パフォーマンス カウンタを作成する」を参照してください。

ASP.NET Web アプリケーションのパフォーマンスを監視する際は、次の表に示すパフォーマンス カウンタを追跡できます。

パフォーマンス オブジェクト パフォーマンス カウンタ

ASP.NET

Application Restarts

ASP.NET

Requests Queued

ASP.NET

Worker Process Restarts

ASP.NET アプリケーション

Errors Total

ASP.NET アプリケーション

Requests/Sec

プロセッサ

% CPU Utilization

Noteメモ :
クライアントの負荷に関係なく、CPU 使用率が低い場合や、CPU 使用率を最大化できない場合は、Web アプリケーションでロックやリソースが競合している可能性があります。

また、Web アプリケーションのパフォーマンスに関する問題を調べるときには、次のパフォーマンス カウンタが役に立つことがあります。

パフォーマンス オブジェクト パフォーマンス カウンタ

ASP.NET アプリケーション

Pipeline Instance Count

.NET CLR Exceptions

# of Exceps Thrown

システム

Context Switches/sec

# of Exceps Thrown カウンタは、アプリケーションでスローされた例外の数を表示します。この値はパフォーマンスと関係している場合があります。ただし、正しい動作に対して発生する例外に依存しているコード パスもあります。たとえば、Response オブジェクトの Redirect メソッドは、カウンタ側で理解できない ThreadAbortException 例外をスローします。したがって、この値は Errors Total カウンタと共に追跡して、アプリケーションで例外によってエラーが生成されたかどうかを確認してください。

Context Switches/sec カウンタは、Web サーバー コンピュータ内のすべての CPU でスレッド コンテキストが切り替えられる速度を計測します。このカウンタの数値が高い場合は、通常、ロックの競合が頻繁に発生しているか、またはスレッドによるユーザーとカーネル モードの切り替えが多いことを示します。この状況が発生したら、サンプリング プロファイラなどのツールを使用してさらに調べる必要があります。

ASP.NET システム パフォーマンス カウンタ

ASP.NET は、次の表に示す ASP.NET システム パフォーマンス カウンタをサポートしています。これらのカウンタは、Web サーバー コンピュータ上のすべての ASP.NET アプリケーションから情報を収集します。

Noteメモ :

状態サーバーが実行されているサーバー コンピュータにだけ適用される ASP.NET パフォーマンス オブジェクト内のステート サーバー セッション カウンタと、プロセス内で発生するユーザー セッションにだけ適用される ASP.NET Applications パフォーマンス オブジェクト内のセッション カウンタの間には大きな違いがあります。

  • Application Restarts
    Web サーバーの有効期間中に 1 つのアプリケーションが再起動された回数。アプリケーションの再起動回数は、Application_OnEnd イベントが発生するたびにインクリメントされます。アプリケーションの再起動は、Web.config ファイルに対する変更、アプリケーションの Bin ディレクトリに格納されたアセンブリに対する変更が原因で、または ASP.NET Web ページでの変更が多すぎるためにアプリケーションが再コンパイルされなければならない場合に発生することがあります。このカウンタの値が予想外に大きくなる場合は、何らかの問題が原因で Web アプリケーションがリサイクルされている可能性があります。このような場合は、できるだけ早くその原因を調べてください。

    Noteメモ :

    この値は、インターネット インフォメーション サービス (IIS: Internet Information Services) ホストが再起動されると 0 にリセットされます。

  • Application Running
    サーバー コンピュータ上で同時に実行されているアプリケーションの数。
  • Requests Disconnected
    通信エラーのために切断された要求の数。
  • Requests Queued
    キュー上でサービスを待機している要求の数。この数値がクライアントの負荷に比例して増加し始めた場合は、Web サーバー コンピュータが処理できる同時要求数の限界に到達しています。このカウンタの既定の最大値は 5,000 です。この設定は Machine.config ファイルで変更できます。
  • Requests Rejected
    処理に必要なサーバー リソースが不足しているために実行されなかった要求の合計数。このカウンタは、サーバーがビジーであることを示す HTTP ステータス コード 503 を返した要求の数を表します。
  • Request Wait Time
    最新の要求がキュー内で処理を待機していたミリ秒単位の時間。
  • Session State Server Connections Total
    アウトプロセス セッション状態データが格納されているコンピュータへのセッション状態接続の合計数。詳細については、「セッション状態モード」を参照してください。
  • Session SQL Server Connections Total
    セッション状態データが格納されている Microsoft SQL Server データベースへのセッション状態接続の合計数。詳細については、「セッション状態モード」を参照してください。
  • State Server Sessions Abandoned
    明示的に破棄されたユーザー セッションの数。これらは、ブラウザを終了した、または別のサイトに移動したなど、明確なユーザーのアクションによって終了されたセッションです。このカウンタは、状態サーバー サービス (aspnet_state) が実行されているコンピュータ上でだけ使用できます。
  • State Server Sessions Active
    現在アクティブなユーザー セッションの数。このカウンタは、状態サーバー サービス (aspnet_state) が実行されているコンピュータ上でだけ使用できます。
  • State Server Sessions Timed Out
    ユーザーが何もしなかったためにアクティブでなくなったユーザー セッションの数。このカウンタは、状態サーバー サービス (aspnet_state) が実行されているコンピュータ上でだけ使用できます。
  • State Server Sessions Total
    プロセスの有効期間中に作成されたセッションの数。このカウンタは、State Server Sessions Active、State Server Sessions Abandoned および State Server Sessions Timed Out の値の合計値です。このカウンタは、状態サーバー サービス (aspnet_state) が実行されているコンピュータ上でだけ使用できます。
  • Worker Process Restarts
    サーバー コンピュータ上でワーカー プロセスが再起動された回数。ワーカー プロセスは、予期しないエラーが発生した場合や、意図的にリサイクルされる場合に再起動される可能性があります。このカウンタが予想外に増加する場合は、できるだけ早くその原因を調べてください。
  • Worker Process Running
    サーバー コンピュータ上で実行されているワーカー プロセスの数。

ASP.NET アプリケーション パフォーマンス カウンタ

ASP.NET は、次の表に示すアプリケーション パフォーマンス カウンタをサポートしています。これらのカウンタを使用すると、ASP.NET アプリケーションの単一のインスタンスのパフォーマンスを監視できます。これらのカウンタには __Total__ という名前の一意のインスタンスを利用できます。このインスタンスは、1 台の Web サーバー上のすべてのアプリケーションに対するカウンタを集計します (このトピックで前述したグローバル カウンタと似ています)。__Total__ インスタンスはいつでも利用できます。サーバー上で現在実行しているアプリケーションがない場合、カウンタの値は 0 になります。

  • Anonymous Requests
    匿名認証を使用する要求の数。
  • Anonymous Requests/Sec
    匿名認証を使用する要求の秒単位の数。
  • Cache Total Entries
    キャッシュ内のエントリの合計数。このカウンタでは、ASP.NET ページ フレームワークによるキャッシュの利用と、キャッシュ API 経由のアプリケーション キャッシュの利用の両方が対象となります。
  • Cache Total Hits
    キャッシュ内でヒットした回数の合計。このカウンタでは、ASP.NET ページ フレームワークによるキャッシュの利用と、キャッシュ API 経由のアプリケーション キャッシュの利用の両方が対象となります。
  • Cache Total Misses
    キャッシュ内でヒットしなかった要求のアプリケーションごとの数。このカウンタでは、ASP.NET ページ フレームワークによるキャッシュの利用と、キャッシュ API 経由のアプリケーション キャッシュの利用の両方が対象となります。
  • Cache Total Hit Ratio
    キャッシュ内でヒットした回数の割合。このカウンタでは、ASP.NET ページ フレームワークによるキャッシュの利用と、キャッシュ API 経由のアプリケーション キャッシュの利用の両方が対象となります。
  • Cache Total Turnover Rate
    キャッシュに対する追加と削除の秒単位の回数。この値は、キャッシュがどの程度効果的に使用されているかを判断するうえで有用です。回転率が高い場合、キャッシュはあまり効果的に使用されていません。
  • Cache API Entries
    アプリケーション キャッシュ内のエントリの合計数。
  • Cache API Hits
    外部キャッシュ API だけを使用してアクセスされた場合の、キャッシュ内でのヒットの合計数。このカウンタは、ASP.NET ページ フレームワークによるキャッシュの使用については追跡しません。
  • Cache API Misses
    外部キャッシュ API を使用してアクセスされた場合の、キャッシュ内でヒットしなかった要求の合計数。このカウンタは、ASP.NET ページ フレームワークによるキャッシュの使用については追跡しません。
  • Cache API Hit Ratio
    外部キャッシュ API を使用してアクセスされた場合の、キャッシュ内でヒットした回数の割合。このカウンタは、ASP.NET ページ フレームワークによるキャッシュの使用については追跡しません。
  • Cache API Turnover Rate
    外部 API を使用して使用された場合の、キャッシュに対する追加と削除の秒単位の回数 (ASP.NET ページ フレームワークによる利用を除く)。この値は、キャッシュがどの程度効果的に使用されているかを判断するうえで有用です。回転率が高い場合、キャッシュはあまり効果的に使用されていません。
  • Compilations Total
    現在の Web サーバー プロセスの有効期間中に実行されたコンパイルの合計回数。このカウンタがインクリメントされるのは、ファイル名拡張子が .aspx、.asmx、.ascx、または .ashx のファイル、または分離コード ソース ファイルがサーバー上で動的にコンパイルされるときです。

    この数値は、最初のうちはアプリケーションのすべての部分に対して要求が行われるのでピーク値に向かって上昇します。ただし、いったんコンパイルが実行されると、結果としてコンパイルされた出力がディスクに保存され、ソース ファイルが変更されるまでの間再利用されます。つまり、プロセスが再起動された場合でも、アプリケーションが修正または再配置されるまでの間は、このカウンタが 0 (無効) のまま変化しないことがあります。

  • Debugging Requests
    デバッグが有効化されている間に発生した要求の数。
  • Errors During Preprocessing
    解析中に発生したエラーの数 (コンパイル エラーおよびランタイム エラーを除く)。
  • Errors During Compilation
    動的コンパイル中に発生したエラーの数 (パーサー エラーおよびランタイム エラーを除く)。
  • Errors During Execution
    HTTP 要求の実行中に発生したエラーの合計数 (パーサー エラーおよびコンパイル エラーを除く)。
  • Errors Unhandled During Execution
    HTTP 要求の実行中に発生した、処理されないエラーの合計数。処理されないエラーとはユーザー コード内でトラップされないランタイム例外であり、このエラーが発生すると、ASP.NET 内部エラー処理ロジックに制御が移ります。次の場合はこの規則の例外です。

    • カスタム エラーが有効な場合、エラー ページが定義されている場合、またはその両方。

    • Page_Error イベントがユーザー コード内で定義されていて、エラーがクリアされる (ClearError メソッドを使用) か、またはリダイレクトが実行される場合。

  • Errors Unhandled During Execution/Sec
    HTTP 要求の実行中に発生した、処理されない例外の秒単位の数。
  • Errors Total
    HTTP 要求の実行中に発生したエラーの合計数 (パーサー エラー、コンパイル エラー、およびランタイム エラーを含む)。このカウンタは、Errors During Compilation、Errors During Preprocessing、Errors During Execution の各カウンタの集計です。正常に機能している Web サーバーではエラーは発生しません。ASP.NET Web アプリケーションでエラーが発生すると、エラー回復のためまったく異なるコード パスが使用され、スループットの結果が変わってしまう可能性があります。アプリケーションのバグを調べて修正してから、テストを実行します。
  • Errors Total/Sec
    HTTP 要求の実行中に発生したエラーの秒単位の数 (パーサー エラー、コンパイル エラー、およびランタイム エラーを含む)。
  • Output Cache Entries
    出力キャッシュ内のエントリの合計数。
  • Output Cache Hits
    出力キャッシュからサービスを提供された要求の合計数。
  • Output Cache Misses
    出力キャッシュ内でヒットしなかった要求のアプリケーションごとの数。
  • Output Cache Hit Ratio
    出力キャッシュからサービスを提供された要求合計の割合。
  • Output Cache Turnover Rate
    出力キャッシュに対する追加と削除の秒単位の回数。回転率が高い場合、キャッシュはあまり効果的に使用されていません。
  • Pipeline Instance Count
    指定した ASP.NET アプリケーションに関する、アクティブな要求パイプライン インスタンスの数。1 つのパイプライン インスタンス内で実行できる実行スレッドは 1 つだけであるため、この数値は特定のアプリケーションで処理される同時要求の最大数を示します。多くの場合、負荷がかかっている状態でこの数値が低いのは、CPU が適切に使用されていることを示すため望ましいといえます。
  • Request Bytes In Total
    すべての要求のバイト単位の合計サイズ。
  • Request Bytes Out Total
    クライアントに送信された応答のバイト単位の合計サイズ。HTTP 応答ヘッダーは含まれません。
  • Requests Executing
    現在実行されている要求の数。
  • Requests Failed
    失敗した要求の合計数。400 以上のすべてのステータス コードは、このカウンタをインクリメントします。

    ステータス コード 401 を発生させる要求は、このカウンタと Requests Not Authorized カウンタをインクリメントします。ステータス コード 404 または 414 を発生させる要求は、このカウンタと Requests Not Found カウンタをインクリメントします。ステータス コード 500 を発生させる要求は、このカウンタと Requests Timed Out カウンタをインクリメントします。

  • Requests Not Found
    リソースが見つからなかったために失敗した要求の数 (ステータス コード 404 または 414)。
  • Requests Not Authorized
    認証されなかったために失敗した要求の数 (ステータス コード 401)。
  • Requests Succeeded
    正常に実行された要求の数 (ステータス コード 200)。
  • Requests Timed Out
    タイムアウトになった要求の数 (ステータス コード 500)。
  • Requests Total
    サービスの開始時点以降の要求の合計数。
  • Requests/Sec
    実行された要求の秒単位の数。これはアプリケーションの現在のスループットを表します。一定の負荷の下で、ガベージ コレクション、キャッシュ クリーンアップ スレッド、外部サーバー ツールなど、他のサーバーの処理が行われていない場合、この数値は一定の範囲内に収まっている必要があります。
  • Sessions Active
    現在アクティブなセッションの数。このカウンタは、メモリ内セッション状態を使用する場合にだけサポートされます。
  • Sessions Abandoned
    明示的に破棄されたセッションの数。このカウンタは、メモリ内セッション状態を使用する場合にだけサポートされます。
  • Sessions Timed Out
    タイムアウトしたセッションの数。このカウンタは、メモリ内セッション状態を使用する場合にだけサポートされます。
  • Sessions Total
    セッションの合計数。このカウンタは、メモリ内セッション状態を使用する場合にだけサポートされます。
  • Transactions Aborted
    アクティブなすべての ASP.NET アプリケーションに対してキャンセルされたトランザクションの数。
  • Transactions Committed
    アクティブなすべての ASP.NET アプリケーションに対してコミットされたトランザクションの数。
  • Transactions Pending
    アクティブなすべての ASP.NET アプリケーションに対して進行中のトランザクションの数。
  • Transactions Total
    アクティブなすべての ASP.NET アプリケーションに対するトランザクションの合計数。
  • Transactions/Sec
    アクティブなすべての ASP.NET アプリケーションに対して開始された秒単位のトランザクションの数。

参照

概念

高パフォーマンス ASP.NET アプリケーションの開発
ASP.NET でのパフォーマンスの最適化
ASP.NET アプリケーションのパフォーマンスの監視

その他の技術情報

ASP.NET キャッシュ