WSUS サーバーでの CPU 使用率の高いトラブルシューティング

この記事では、Windows Server Update Service (WSUS) での CPU 使用率の高いトラブルシューティングのいくつかの手順について説明します。

注:

ホーム ユーザー: この記事は、テクニカル サポート エージェントと IT プロフェッショナルのみを対象としています。 問題のヘルプを探している場合は、 Microsoft コミュニティに問い合わせてください

元の製品バージョン: Configuration Manager (現在のブランチ)
元の KB 番号: 4489045

WSUS データベース (SUSDB) がクリーンされていない場合、CPU 使用率が高くなる可能性があります。 サーバーがしばらく実行されると、WSUS サーバーがクライアントに提供する更新プログラムが多すぎる可能性があります。

このような状況で、障害が発生した場合、または新しい WSUS サーバーがインストールされている場合、または関連のない問題により、クライアントが数日スキャンできない場合、すべてのクライアントがスキャンを開始し、継続的にスキャンを続行し、スキャンを実際に完了したり、更新プログラムをインストールしたりすることはありません。

この問題を解決するには、WSUS サーバーをクリーンし、置き換えられた更新プログラムを拒否する必要があります。 毎月のクリーンアップ ルーチンとして、以下の順序で手順に従います。 ただし、CPU の高い問題のトラブルシューティングを行う場合は、最初に手順 4 を実行してから、手順 3 を実行することをお勧めします。 CPU 使用率が低下するまで、手順 1 と 2 を延期する必要があります。

手順 1: WSUS データベースをバックアップする

WSUS データベースをバックアップすると、パフォーマンスが若干向上する可能性があります。

手順 2: WSUS サーバー クリーンアップ ウィザードを実行する

WSUS サーバー クリーンアップ ウィザードを実行すると、データベースのパフォーマンスが向上します。 ただし、クライアントがスキャンする更新プログラムの数は減りません。 さらに、必ずしも問題を解決せずにウィザードが実行されるまでに数時間または数日かかることがあります。

手順 3: WSUS データベースのインデックスを再作成する

WSUS データベースのインデックスを再作成すると、断片化されている場合にデータベースのパフォーマンスが向上する可能性があります。 これを行うには、次のコマンドを実行します。

  1. オプションを使用して を statistics 更新します FULLSCAN

    Use <dbname>
    Go
    Exec sp_msforeachtable 'update statistics ? with fullscan'
    Go
    
  2. インデックスを再構築します。

    Use <dbname>
    Go
    Exec sp_msforeachtable 'DBCC DBREINDEX (''?'')'
    Go
    

手順 4: 置き換えられた更新プログラムを拒否する

置き換えられた更新プログラムを拒否すると、スキャンされる更新プログラムの数がすぐに減ります。

WSUS アプリケーション プールのリサイクル速度が速すぎる状況で、置き換えられた更新プログラムを拒否したり、WSUS アクションを実行したりするには、まず、クライアントが WSUS アプリケーション プールに接続するのを停止します。 これを行うには、WSUS コンソールを使用して WSUS サーバーに接続し、WSUS サーバーをアップストリーム サーバーと同期し、Configuration Manager (使用されている場合) と同期します。 Configuration Managerを使用している場合は、クライアントが WSUS に最新の更新プログラムと有効な更新プログラムがあることをクライアントが確認できるように、Configuration Manager コンソールで最新バージョンの更新プログラムに同期することが重要です。

クライアントを切断するには、次のいずれかの方法を使用します。

方法 1: テスト アプリケーション プールを作成する

  1. [インターネット インフォメーション サービス (IIS) マネージャー] 領域で [アプリケーション プール] を右クリックし、[アプリケーション プールの追加] を選択してテスト アプリケーション プールを作成します。

  2. [ クライアント Web サービス>] [アプリケーション>の管理] [詳細設定] の順に選択し、アプリケーション プールを作成したテスト アプリケーション プールに変更します。

方法 2: WSUS Web サイトのポートを変更する

  1. [ WSUS 管理] [Web サイト>のバインドの編集] の順に選択します

  2. WSUS コンソールを変更して新しいポートに接続し、スクリプトを実行し、USS と同期します。

    注:

    この方法では、Configuration Managerとの同期が失敗します。

方法 3: ファイアウォール規則を使用して、すべてのクライアント IP アドレスをブロックするか、USS とサイト サーバーの受信接続のみを許可する

クライアントが WSUS サーバーから切断されたら、(および-exclusion必要に応じて) パラメーターを-skipdecline使用して PowerShell スクリプトを実行し、拒否できる置き換えられた更新プログラムの合計数を決定できます。 次に、 を使用 -skipdecline してスクリプトをもう一度実行して、実際に更新プログラムを拒否します。

タイムアウトのために PowerShell スクリプトを実行できない極端なケースでは、すべての更新プログラムが表示されたら WSUS コンソールに置き換え列を追加し、次の手順に従って更新プログラムを手動で拒否できます。

  1. Windows Update Services Microsoft 管理コンソール (MMC) を開きます。
  2. [すべての更新] ビューを選択します。 これを行うには、承認の状態が [拒否済み以外] の [承認] 状態を表示するように表示を設定し、[更新] をクリックします。
  3. 列ヘッダーを右クリックし、[ 置き換え] を選択します。
  4. [置き換え] 列を左クリックして、置き換えで並べ替えます。
  5. 置き換えられた更新プログラムを選択して拒否します。

通常、パフォーマンスの問題は、有効な更新プログラムが 7,000 接続未満 (ただし 5,000 未満が推奨) に減らされた後で解決できます。 クライアントがすべてのスキャンを完了できるように、数日間、WSUS 管理 Web サイトへの接続を制限しなければならない場合があります。 また、置き換えられた更新プログラムを拒否した後で、データベースのインデックスを再作成することをお勧めします。 Configuration Managerを使用している場合は、クライアントが接続していない間も WSUS とConfiguration Managerの間で同期を実行します。

これらの手順を完了した後、CPU 使用率がまだ高すぎる場合は、接続を制限する必要があります。 これを行うには、次の手順を実行します。

  1. インターネット インフォメーション サービス (IIS) マネージャー>WSUS 管理 Web サイトを開くWeb サイト>>の管理詳細設定>最大同時接続数を制限します>。

  2. 値を 50 または 100設定します。

  3. タスク マネージャーの W3Wp プロセスとサーバー上の CPU の合計を監視します。

  4. タスク マネージャー >リソース モニターを開き、WSUS アプリケーション プールの PID をメモします。 どの w3wp プロセスが WSUS アプリケーション プールを実行しているかがわからない場合は、Appcmd (方法 2) を使用して PID を簡単に識別できます。

既定では、PID は 29 時間ごとに 1 回だけ変更されます。 変更頻度が高い場合は、WSUS アプリケーション プールの現在の CPU とメモリの設定に対する接続制限が高すぎる可能性があります。

安定した w3wp メモリと 90% 未満の安定した全体的な CPU 使用率を監視します。 安定した状態の CPU とメモリの使用が減少すると、WSUS 管理 Web サイトへの接続制限を徐々に増やすことができます。 どのような状況にあるかによっては、メモリ使用量が安定した状態に戻るために数日かかる場合があります。 接続の制限を増やすには、数日間にわたって小さな増分で行う必要がある場合があります。

関連情報

更新火曜日に WSUS で高 CPU/高メモリ