どうも、Tです。
WSUSをデフォルトのインストール状態で使っているとWSUSコンソールが表示されないや動作が固まるといった症状が良く発生します。
今回は、そのような症状を抑えるためのIISに関するチューニングの備忘録です。
目次
IISチューニングの情報
WSUS向けのIISチューニングといっても、国内・海外含めていろんな説明がされています。今回は、正確性の高い情報を見ながらまとめていきたいと思います。
まず1つ目に日本マイクロソフトのWSUSサポートチームブログで公開されている情報があります。
2つ目にLearnに公開されている情報があります。
同じマイクロソフトではありますが、IISチューニングに設定するパラメーターが異なっているため個人的見解も含めまとめていきます。
IIS設定画面
WSUSのIISチューニングを行う画面は、サーバーマネージャーから「インターネットインフォメーション(IIS)マネージャー」->「アプリケーションプール」->「WsusPool」->「詳細設定」画面になります。
詳細設定を開くと上図のような画面が開きます。
■(青四角)は、日本マイクロソフトサポートチームがお勧めする設定箇所です。
■(オレンジ四角)は、Learnが推奨する設定箇所です。
チューニング対象のパラメーターリスト
詳細設定
デフォルト値 | 日本マイクロソフトサポートチーム | Learn | 備考 | |
---|---|---|---|---|
全般 | ||||
キューの長さ | 1000 | 2000 | 2000 | [queuetLength]HTTP.sysがアプリケーションプール用にキューに格納する要求の最大数です。最大数を超えると、以降の要求に対して”サービスを使用できません”という503エラーが返されます。 |
CPU | ||||
制限(%) | 0 | 0 | 言及なし | [limit]”CPU制限間隔”プロパティに示された期間内にアプリケーションプールのワーカープロセスが消費できるCPU時間の最大の%を構成します。”CPU制限”プロパティで設定された制限を超えた場合は、イベントログにイベントが記録され、”CPU制限動作”プロパティで指定されたとおりイベントのオプション設定が発生します。このプロパティの値を0に設定すると、ワーカープロセスをCPU時間(%)に制限する動作が無効になります。 |
プロセス モデル | ||||
Pingの有効化 | True | 言及なし | False | [pingingEnabled]Trueの場合、アプリケーションプールを使用するワーカープロセスに対して定期的にPingが実行され、応答の有無が確認されます。健全性の監視と呼ばれます。 |
アイドル状態のタイムアウト(分) | 20 | 言及なし | 0 | [idleTimeout]このプロパティで指定した時間(分)を超えてワーカープロセスのアイドル状態が続くと、ワーカープロセスはシャットダウンします。アイドル状態とは、ワーカープロセスが要求の寄りと新しい要求の受信を行っていない状態です。 |
ラピッド フェール保護 | ||||
エラー間隔(分) | 5 | 30 | 言及なし | [rapidFailProtectionInterval]一定数のワーカープロセスのクラッシュ(最大エラー数)が、このプロパティで指定した期間内(分)に発生すると、ラピッドフェール保護によってアプリケーションプールがシャットダウンします。 |
最大エラー数 | 5 | 60 | 言及なし | [rapidFailProtectionMaxCrashes]ワーカープロセスクラッシュの数がこのプロパティで指定した値を超えると、ラピッドフェールほぞによってアプリケーションプールがシャットダウンします。 |
リサイクル | ||||
プライベート メモリ制限(KB) | 4294967 ※メモリ8GB搭載時 | 8000000 ※メモリ8GB未満の場合は4000000 | 0 | [privateMemory]アプリケーションプールがリサイクルするまでにワーカープロセスが使用できるプライベートメモリの最大容量をKB単位で指定します。値を0に設定すると、無制限になります。 |
仮想メモリ制限(KB) | 0 | 0 | 言及なし | [memory]アプリケーションプールがリサイクルするまでにワーカープロセスが使用できる仮想メモリの最大容量をKB単位で指定します。 |
定期的な期間(分) | 1740 | 言及なし | 0 | [time]アプリケーションプールがリサイクルする間隔を分単位で指定します。値を0に設定すると、アプリケーションプールは定期的にリサイクルしません。 |
両者に記載のあるパラメーターをマトリクスでまとめました。
なお、上記に日本マイクロソフトサポートチームがお勧めすると書いたように絶対にこの値にしろというわけではなく、環境に合わせて調整する必要があるとのことです。
https://jpmem.github.io/blog/wsus/2022-05-09_01/
※以下の値はあくまでも参考値ですので、ご利用環境に合わせてパフォーマンスモニターなどをご利用いただきご調整ください。
両者の違い
「キューの長さ」「制限(%)」「仮想メモリ制限(KB)」に関しては、両者とも同じ値ですが、その他のパラメーターは異なっています。
このパラメーターを指定する思惑がすべて記載されていたわけでないため、ここからは個人的な感想になります。
日本マイクロソフトサポートチームは、ラピットフェール保護によるIISのアプリケーションプールのシャットダウンを抑えるようにしています。また、プライベートメモリ制限をお行い、アプリケーションプールのリサイクルは許可しています。この辺りから、WSUSのエラーを抑えつつ、他の役割のサーバーが相乗りしている場合に、他の役割への影響を低くしようとしているのではないかと思われました。
Learnは、ワーカープロセスのシャットダウンを行わないようにし、プライベートメモリ制限も撤廃しています。また、アプリケーションプールのリサイクルも行わないようにしています。リサイクルしない理由は明言されています。
プールがリサイクルされると、キャッシュが削除されるので再構築する必要があります。 クライアントが差分スキャンを受けている場合、これは大きな問題ではありません。 ただし、スキャン ストームのシナリオになると、プールは常にリサイクルされます。 また、クライアントはスキャン要求を行うと、 HTTP 503 などのエラーを受け取ります。
ラピッドフェール保護の設定に言及していないのは、そもそも、ワーカープロセスのへのPingを無効化しており、エラー頻度が低いからデフォルト値でもよいという考えと感じています。
また、プライベートメモリ制限はなしになっていますが、さらっと以下のようなことが書かれています。このキャッシュは、データベースから取得する更新プログラムのメタデータと思われます。
約 17,000 個の更新プログラムがキャッシュされている環境では、キャッシュが約 14 GB に安定するまで構築されるため、24 GB を超えるメモリが必要になる場合があります。
個人的見解
ということで、個人的には…
WSUSサーバーに他の役割も相乗りしており、他の役割への影響を抑えたい場合は、日本マイクロソフトサポートチームのパラメーターをベースに環境に合わせて調整をする。
WSUS専用サーバーであり、リソースをすべてWSUS用として利用してもよい場合はLearnのパラメーターを採用する。ただし、搭載する物理メモリは、更新プログラムの数に応じてある程度余力を持たせておく必要がある。
という結論になりました。
まとめ
WSUSに限らず、あまりサーバーの相乗り構成が好きではないため、できればWSUS専用サーバーとして構築したいものです。