WSUS サーバーでの CPU 使用率の高いトラブルシューティング
この記事では、Windows Server Update Service (WSUS) での CPU 使用率の高いトラブルシューティングを行う手順をいくつか紹介します。
元の製品バージョン: Configuration Manager (Current Branch)
元の KB 番号: 4489045
WSUS データベース (SUSDB) がクリーンでない場合は、CPU 使用率が高くなる可能性があります。 サーバーがしばらく実行されると、WSUS サーバーがクライアントに提供する更新プログラムが多すぎる可能性があります。
このような状況では、エラーが発生した場合、または新しい WSUS サーバーがインストールされている場合、または関連のない問題により、クライアントが数日スキャンできなくなると、すべてのクライアントがスキャンを開始し、継続的にスキャンを続行し、実際にスキャンを完了したり更新プログラムをインストールしたりすることはありません。
この問題を解決するには、WSUS サーバーをクリーンアップし、置き換えられた更新プログラムを拒否する必要があります。 毎月のクリーンアップ ルーチンとして、次の順序で手順に従います。 ただし、CPU 使用率の高い問題をトラブルシューティングする場合は、最初に手順 4 を実行してから、手順 3 を実行することをお勧めします。 CPU 使用率レベルが低下するまで、手順 1 と 2 を延期する必要があります。
手順 1: WSUS データベースをバックアップする
WSUS データベースをバックアップすると、パフォーマンスが若干向上する可能性があります。
手順 2: WSUS サーバー クリーンアップ ウィザードを実行する
WSUS サーバー クリーンアップ ウィザードを実行すると、データベースのパフォーマンスが向上します。 ただし、クライアントがスキャンする更新プログラムの数は減りません。 さらに、必ずしも問題を解決しなくても、ウィザードが実行されるまでに数時間または数日かかることがあります。
手順 3: WSUS データベースのインデックスを再作成する
WSUS データベースのインデックスを再作成すると、断片化している場合にデータベースのパフォーマンスが向上する可能性があります。 これを行うには、次のコマンドを実行します。
FULLSCAN
オプションを使用して、statistics
を更新します。Use <dbname> Go Exec sp_msforeachtable 'update statistics ? with fullscan' Go
インデックスを再構築します。
Use <dbname> Go Exec sp_msforeachtable 'DBCC DBREINDEX (''?'')' Go
手順 4: 置き換えられた更新プログラムを拒否する
置き換えられた更新プログラムを拒否すると、スキャンされる更新プログラムの数がすぐに減ります。
WSUS アプリケーション プールのリサイクルが早すぎる状況で置き換えられた更新プログラムを拒否したり、WSUS アクションを実行したりするには、まず、クライアントが WSUS アプリケーション プールに接続するのを停止します。 これを行うには、WSUS コンソールを使用して WSUS サーバーに接続し、WSUS サーバーをアップストリーム サーバーと Configuration Manager と同期します (使用されている場合)。 Configuration Manager を使用している場合は、クライアントが WSUS に最新の有効な更新プログラムがあることをクライアントが確認できるように、Configuration Manager コンソールで最新バージョンの更新プログラムに同期することが重要です。
クライアントを切断するには、次のいずれかの方法を使用します。
方法 1: テスト アプリケーション プールを作成する
インターネット インフォメーション サービス (IIS) マネージャー領域でアプリケーション プールを右クリックし、[ アプリケーション プールの追加を選択してテスト アプリケーション プールを作成します。
Client Web サービス>管理アプリケーション>Advanced 設定を選択し、作成したテスト アプリケーション プールにアプリケーション プールを変更します。
方法 2: WSUS Web サイトのポートを変更する
[WSUS 管理 Web サイト編集バインド>を選択します。
WSUS コンソールを変更して新しいポートに接続し、スクリプトを実行し、USS と同期します。
Note
この方法では、Configuration Manager との同期が失敗します。
方法 3: ファイアウォール規則を使用して、すべてのクライアント IP アドレスをブロックするか、USS とサイト サーバーの受信接続のみを許可する
クライアントが WSUS サーバーから切断されたら、-skipdecline
(および必要に応じて-exclusion
期間) パラメーターを使用してPowerShell スクリプトを実行して、拒否できる置き換えられる更新プログラムの合計数を決定できます。 次に、 -skipdecline
を使用してスクリプトを再度実行し、実際に更新プログラムを拒否します。
タイムアウトのために PowerShell スクリプトを実行できない極端な場合は、すべての更新プログラムが表示されたときに WSUS コンソールに置き換え列を追加し、次の手順に従って更新プログラムを手動で拒否できます。
- Windows Update Services Microsoft 管理コンソール (MMC) を開きます。
- [すべての更新プログラム] ビューを選択します。 これを行うには、 Approval ステータスが [拒否済み] を除く Any Any の状態を表示するように設定し、 Refresh をクリックします。
- 列ヘッダーを右クリックし、 Supersedence を選択します。
- 置き換えで並べ替えるには、 Supersedence 列を左クリックします。
- 置き換えられた更新プログラムを選択して拒否します。
通常、有効な更新プログラムを 7,000 未満の接続に減らした後にパフォーマンスの問題を解決できます (ただし、推奨される接続数は 5,000 未満です)。 クライアントがすべてのスキャンを完了できるように、WSUS 管理 Web サイトへの接続を数日間制限しなければならない場合があります。 置き換えられた更新プログラムを拒否した後で、データベースのインデックスを再作成することもお勧めします。 Configuration Manager を使用している場合は、クライアントが接続していない間も WSUS と Configuration Manager の間で同期を実行します。
これらの手順を完了した後、CPU 使用率が高すぎる場合は接続を制限する必要があります。 これを行うには、次の手順を実行します。
インターネット インフォメーション サービス (IIS) マネージャー>WSUS 管理 Web サイト>管理 Web サイト>Advanced 設定>Limits>Maximum 同時接続を開きます。
値を 50 または 100 に設定します。
タスク マネージャーの W3Wp プロセスとサーバー上の CPU の合計を監視します。
タスク マネージャー >リソース モニターを開き、WSUS アプリケーション プールの PID をメモします。 WSUS アプリケーション プールを実行している w3wp プロセスがわからない場合は、Appcmd (Method 2) を使用して PID を簡単に識別できます。
既定では、PID は 29 時間ごとに 1 回のみ変更されます。 変更頻度が高い場合は、WSUS アプリケーション プールの現在の CPU とメモリの設定に対して接続制限が高すぎる可能性があります。
安定した w3wp メモリと 90% 未満の安定した全体的な CPU 使用率を監視します。 安定状態の CPU とメモリの使用量が減少すると、WSUS 管理 Web サイトへの接続制限を徐々に増やすことができます。 状況によっては、メモリ使用量が安定した状態に戻るために数日かかる場合があります。 接続の制限を増やすには、数日間にわたって少しずつ行う必要がある場合があります。