Windows Server で性能問題が発生したときなど、ボトルネックを探すのに参考にするとよいパフォーマンスカウンタの一覧と、判断の目安です。
CPU
カウンター | 説明 |
\Processor(*)\% Processor Time | プロセッサがアイドル状態でないスレッドを実行した時間の割合。 Processor(_Total) は全ての Processor の平均値なので、どれか1個の Processor が 100% になっていた場合には気づきにくいです。よって、それぞれの Processor 単位で見る必要があります。 Total が 85% を超えている場合は、サーバー全体として CPU のスペックが足りていない可能性があります。 個別の Processor の使用率が高い場合は、アプリケーション側の問題である可能性が高いです。その場合は、Processor を分散して使用可能にするなどのアプリ側の対応が必要となります。 |
\Processor(_Total)\Interrupt Time | プロセッサがハードウェア割り込みを受け取って、処理をした時間の割合。 15% を超えた場合は、ハードウェアに関する問題が発生している可能性があります。 |
\System\Processor Queue Length | プロセッサ キューに格納されているスレッドの数。(プロセッサで実行中のスレッドは含まない) 長時間、物理 CPU コア数の2倍を超える場合は、サーバーの CPU のスペックが足りていない可能性があります。 |
ディスク
カウンター | 説明 |
\LogicalDisk(*)\% Free Space | 論理ディスク ドライブの空き容量の割合。 システム ドライブが 15% より低くなる場合、OS としては空き容量不足の可能性があります。 |
\PhysicalDisk(*)\% Idle Time | サンプリング間隔中に、ディスクがアイドル状態であった割合。 20% よりも低い場合、ディスク の使用率(容量ではなく アクセス)が高いと判断できます。 |
\PhysicalDisk(*)\Avg. Disk sec/Read | ディスクからのリード処理中の転送時間の平均。 25 msec を超える場合は、ディスクからの読み込みに待ち時間が発生します。 |
\PhysicalDisk(*)\Avg. Disk sec/Write | ディスクへのライト処理中の転送時間の平均。 25 msec を超える場合は、ディスクへの書き込みに待ち時間が発生します。 |
\PhysicalDisk(*)\Avg. Disk Queue Length | サンプリング間隔中に、ディスクのキューにある要求数の平均。 ディスクのスピンドル数+2を超える場合は、ディスクがボトルネックである可能性が高いです。 ※ スピンドル数とは、RAIDのデータディスク数 HDD 4個でRAID 5の場合、スピンドル数は 3 HDD 2個でRAID 0の場合、スピンドル数は 2 |
\LogicalDisk(*)\Disk Transfers/sec | ディスクに対するリード・ライト処理の実行速度。 (補足的な参考値) |
\PhysicalDisk(*)\Disk Bytes/sec | ディスクのリード・ライト速度 (バイト数)。 (補足的な参考値) |
\PhysicalDisk(*)\Disk Read Bytes/sec | ディスクのリード速度 (バイト数)。 (補足的な参考値) |
\PhysicalDisk(*)\Disk Reads/sec | ディスクのリード速度 (I/O 数)。 (補足的な参考値) |
\PhysicalDisk(*)\Disk Write Bytes/sec | ディスクのライト速度 (バイト数)。 (補足的な参考値) |
\PhysicalDisk(*)\Disk Writes/sec | ディスクのライト速度 (I/O 数)。 (補足的な参考値) |
メモリ
メモリの場合は、ボトルネックではなくメモリリークの有無の検出となります。
カウンター | 説明 |
\Memory\% Committed Bytes In Use | Commit Limit に対する Committed Bytes の割合。すなわち、使用されている仮想メモリの割合。 80% を超える場合は、メモリが不足している状態です。 |
\Memory\Available MBytes | 実行中のプロセスに使用できる、物理メモリのサイズ。 継続的に低下している場合、メモリリークが発生している可能性があります。 |
\Memory\Pool Nonpaged Bytes | Non-Paged Pool Memoryのサイズ。 継続的に増加している場合、カーネルが使用するメモリが圧迫される可能性があります。 |
\Memory\Pool Paged Bytes | Paged Pool Memoryのサイズ。 継続的に増加している場合、カーネルが使用するメモリが圧迫される可能性があります。 |
\Memory\Committed Bytes | 使用されているメモリの使用量。 (補足的な参考値) |
\Memory\Page Faults/sec | 1秒間あたりに発生した、ページフォルトの数。 (補足的な参考値) |
ネットワーク
カウンター | 説明 |
\Network Interface(*)\Bytes Total/sec | 1秒間あたりに各ネットワーク アダプター経由で送受信されたバイト数 。 NIC インターフェースの 70% 程度 (1Gbbs の場合、85MB/sec 程度) を超えている場合、ネットワーク帯域が飽和している可能性があります。 |
\Network Interface(*)\Output Queue Length | 送信パケットが格納されるキューの長さ。 2を超える場合、ネットワーク帯域が飽和している可能性があります。 |
\Network Interface(*)\Packets Received/sec | 1秒間あたりに各ネットワーク アダプター経由で受信されたパケットの数。 (補足的な参考値) |
\Network Interface(*)\Packets Sent/sec | 1秒間あたりに各ネットワーク アダプター経由で送信されたパケットの数。 (補足的な参考値) |
\Network Interface(*)\Packets/sec | 1秒間あたりに各ネットワーク アダプター経由で送受信されたパケット数 。 (補足的な参考値) |
プロセス
カウンター | 説明 |
\Process(プロセス名)\Handle Count | プロセスによって現在開かれているハンドル数の合計。 10,000を超えている場合、ハンドルリークが発生している可能性があります。 |
\Process(プロセス名)\Private Bytes | プロセスに割り当てられており、他のプロセスと共有できない領域のメモリサイズ。 増加傾向の場合は、メモリリークが発生している可能性があります。 |