Skip to content

MS_IISPerformanceCounters

nishi_74322014 edited this page Aug 12, 2026 · 1 revision

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

概要

移行メモ(元ページは見出しのみ): 元ページは「概要」「詳細」「参考」の
見出しだけで本文が空(606 バイト)だったため、
IIS性能問題のポイント
記述と整合する形で基本事項を補って記述した。

IISの性能問題を切り分ける際に、
Windows のパフォーマンス モニターperfmon)で確認できる
主要なカウンタを整理する。

詳細

どの層で詰まっているかを見る

IISの性能問題は、どこで待っているかを特定するのが第一歩である。

[クライアント] → [IIS(W3SVC)] → [w3wp.exe(アプリ プール)]
                                        → [ASP.NET] → [DB / 外部 API]
主なカウンタ オブジェクト
Web サーバー全体 Web Service
ワーカー プロセス Processw3wp)、W3SVC_W3WP
ASP.NET ASP.NETASP.NET Applications
.NET ランタイム .NET CLR Memory.NET CLR Exceptions.NET CLR LocksAndThreads
OS ProcessorMemoryPhysicalDiskNetwork Interface

主要なカウンタ

Web Service(サイト単位)

カウンタ 見方
Current Connections 現在の接続数。急増していないか
Total Method Requests/sec スループット
Bytes Sent/sec / Bytes Received/sec 帯域が飽和していないか

ASP.NET

カウンタ 見方
Requests Queued キューに溜まっている数。0 でないなら詰まっている
Requests Current 処理中 + キューの合計
Request Wait Time キューでの待ち時間(ミリ秒)
Request Execution Time 処理時間
Requests Rejected 溢れて 503 を返した数。出ていたら明確に異常

ASP.NET Applications

カウンタ 見方
Requests/Sec アプリ単位のスループット
Errors Total/sec エラー発生率
Sessions Active セッション数(ASP.NET Session
Cache API Hit Ratio キャッシュ効率

.NET CLR

カウンタ 見方
% Time in GC 10% を超え続けるならメモリ問題メモリ リーク
# Gen 2 Collections Gen2 GC の回数。多いとリークの疑い
# of Exceps Thrown / sec 例外の多発は性能を大きく落とす
Contention Rate / sec ロック競合

プロセス(w3wp)

カウンタ 見方
% Processor Time CPU
Private Bytes 右肩上がりならメモリ リーク
Thread Count スレッド数。急増はスレッド枯渇の兆候
Handle Count ハンドル リーク

補足(典型的な読み取り方): 組み合わせで原因を絞る。

症状 見るべき組み合わせ 疑い
遅いが CPU は低い Requests Queued 高 + % Processor Time 外部待ち(DB / API)、スレッド枯渇
遅くて CPU が高い % Processor Time 高 + % Time in GC GC 過多(メモリ問題)
徐々に遅くなる Private Bytes 右肩上がり メモリ リーク
503 が出る Requests Rejected > 0 キュー上限超過。スケール不足
初回だけ遅い 初回が遅い!(JIT / コンパイル)

特に 1 行目は多く、同期的に外部 I/O を待っていることが原因のことが多い。
非同期処理async/await 化で改善する。

収集方法

:: データ コレクタ セットを作る
logman create counter IISPerf -f bincirc -v mmddhhmm -max 250 ^
  -c "\Processor(_Total)\% Processor Time" ^
     "\ASP.NET\Requests Queued" ^
     "\Process(w3wp)\Private Bytes" ^
  -si 00:00:15 -o C:\PerfLogs\IISPerf

logman start IISPerf
logman stop  IISPerf

補足(本番では常時採取しておく): 性能問題は
発生後に再現させるのが難しい
15〜60 秒間隔・循環ファイルで常時採取しておくと、
事後の切り分けが格段に楽になる。負荷もごく小さい。

障害発生時の分析
ダンプの概要と併せて、
「発生時に何を取るか」を運用設計に含めておきたい。

補足(現在の選択肢): perfmon は今も有効だが、
クラウド / コンテナでは別の手段が使われる。

環境 手段
オンプレ Windows perfmon / logman
Azure Application Insights(分散トレース + 依存関係の可視化)
.NET Core 以降 dotnet-counters(クロスプラットフォーム)
コンテナ Prometheus + OpenTelemetry

dotnet-countersperfmon 相当の情報を
Linux コンテナでも取得できるため、
ASP.NET Coreでは第一選択になる。

参考

Microsoft Learn


Tags: 移行, インフラストラクチャ, Windows, IIS, 障害対応, 性能, デバッグ

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally