web-dev-qa-db-ja.com

Perfmon:スレッドが待機していることを識別するカウンターはどれですか?

ASP.NETアプリの負荷テスト中に、高負荷でページに20〜30秒かかることがわかりました。

これは、ページがデータベース呼び出しまたはWebサービスを待機しているためと思われます。

Webサーバー上のこの種のボトルネックを特定できる特定のperfmonカウンターはありますか? CPU、メモリ、ディスクは正常です。

または、このボトルネックを追跡するために、perfmon以外のツールを使用する必要がありますか?

6
frankadelic

特定のアプリケーションまたはサービスがメモリリークを引き起こしていると思われる場合は、次のカウンタを使用してアプリケーションのメモリ使用量を調査してください。

Memory\Available Bytes reports available bytes; its value tends to fall during a memory leak.
Memory\Committed Bytes reports the private bytes committed to processes; its value tends to rise during a memory leak.
Process\Private Bytes reports bytes allocated exclusively for a specific process; its value tends to rise for a leaking process.
Process\Working Set reports the shared and private bytes allocated to a process; its value tends to rise for a leaking process.
Process\Page Faults/sec reports the total number of faults (hard and soft faults) caused by a process; its value tends to rise for a leaking process.
Process\Page File Bytes reports the size of the paging file; its value tends to rise during a memory leak.
Process\Handle Count reports the number of handles that an application opened for objects it creates. Handles are used by programs to identify resources they must access. The value of this counter tends to rise during a memory leak; however, you cannot rule out a leak simply because this counter's value is stable.

メモリリークと非ページプール

リークは深刻ですが、非ページプールが関係する場合、メモリリークは特に懸念されます。多くのシステムサービスは、割り込みの処理時にメモリを参照する必要があり、その時点でページフォールトを発生させることができないため、非ページプールからメモリを割り当てます。リークが非ページプールに影響を与えるかどうかを識別するには、監視に次のカウンターを含めます。

Memory\Pool Nonpaged Bytes
Memory\Pool Nonpaged Allocs
Process\Pool Nonpaged Bytes

識別方法:リークのあるアプリケーションは常により多くのメモリを要求しています。これは、システムのコミット済みバイト数と同じ割合でプロセス/ページファイルのバイト数を増やすことを特徴としています。つまり、すべてのメモリコミットメントは1つのプロセスによるものです。使用可能なバイトは、システムが何かをページアウトするまで着実に減少し、その後、仮想バイトが増加して、より多くの使用可能なバイトのためのスペースを確保します。リークのあるアプリケーションのワーキングセットは、その一部がページアウトされると実際に減少します。使用可能なバイト数が減少すると、ページフォールト/秒がどのように増加するかに注意してください。

Windowsリソースキットには、LeakyApp.exeというサンプルプログラムが含まれています。このプログラムには、常にますます多くのメモリを割り当てるという典型的な欠点があります。

2