Windows 7
 Computer >> コンピューター >  >> システム >> Windows 7

Windows Updateエラー0x80244022の原因と解決法|WSUSのWsusPoolメモリ制限を見直す

ある顧客環境で、Windows 7クライアントへの更新プログラム配信に関して興味深い問題に遭遇しました。更新プログラムは、System Center Configuration Manager(SCCM)に統合されたWSUSサーバー(正確にはSoftware Update Point:SUP)経由で配信されています。SCCMサーバーはWindows Server 2008 R2、WSUSのバージョンはWSUS 3.0 SP2です。Windows 7 SP1が動作する約2,000台のクライアントPCに対して、更新プログラムを適用する必要がありました。

発生していた症状

クライアントPCがSoftware Update Pointから更新プログラムを取得できず、ログには0x80244022というエラーが記録されていました。

クライアント側のログ(WUAhandler.log)

OnSearchComplete - Failed to end search job. Error = 0x80244022.
Scan failed with error = 0x80244022.

WindowsUpdate.log のエラー例

2017-11-11 14:25:41:271 612 4858 Setup WARNING: SelfUpdate check failed to download package information, error = 0x80244022
2017-11-11 14:25:41:271 612 4858 Agent * WARNING: Skipping scan, self-update check returned 0x80244022
2017-11-11 14:25:41:271 612 4858 Agent * WARNING: Exit code = 0x80244022
2017-11-11 14:25:41:271 612 4858 Agent WARNING: WU client failed Searching for update with error 0x80244022
2017-11-11 14:25:41:271 612 4abc AU # WARNING: Search callback failed, result = 0x80244022
2017-11-11 14:25:41:271 612 4abc AU # WARNING: Failed to find updates with error code 80244022

サーバー側のログ(WSUSCtrl.log)

The request failed with HTTP status 503: Service Unavailable
Failures reported during periodic health check by the WSUS Server SCCM-SRV1. Will retry check in 1 minutes

つまり、WSUSサイトが応答していない状態でした。実際にWSUS管理サイトのURL(https://SCCM-Srv1:8530)を開くと、次のエラーが表示されます。

HTTP Error 503. The service is unavailable

原因:WsusPoolアプリケーションプールの停止

IISマネージャーを確認したところ、WSUSを担当するアプリケーションプール(WsusPool)が停止していることが判明しました。手動で起動しても、20〜30分後には再び停止してしまいます。システムログには、WASのイベントID 5117として次のような記録が残っていました。

A worker process serving application pool 'WsusPool' has requested a recycle because it reached its private bytes memory limit

これは「WsusPoolをサービスしているワーカープロセスが、プライベートバイトのメモリ制限に達したためリサイクルを要求した」という意味です。

既定では、WsusPoolのメモリ制限は1.8GBに設定されています。この制限を超えると(WSUSクライアントが多い環境、特に初回スキャン時に発生しやすい)、プールが自動的に再起動されます。実際のメモリ使用量は、w3wp.exeプロセスの値を確認すれば把握できます。1.8GBを超えるとプロセスが強制的に再起動されるため、この問題を解決するには割り当てメモリを増やす必要があります。

補足:この問題は、以前取り上げたWindows 10で更新プログラムの取得時に発生するエラー0x8024401Cのケースと部分的に類似しています。

対処方法:プライベートメモリ制限の引き上げ

IISマネージャーで[アプリケーションプール]を選択し、WsusPoolを右クリックして[リサイクル]を開きます。そのうえで、[プライベート メモリ使用量 (KB)]の値を引き上げてください。

どの程度まで増やすかは環境によりますが、まずは3〜4GBから試すことをお勧めします。私のケースでは、2,000台以上のWSUSクライアントに対して6GBで十分でした。

なお、プールの[詳細設定]からも、同じく[プライベート メモリ使用量 (KB)]の値を変更できます。

設定変更後は、[開始]/[停止]または[リサイクル]ボタンでプールを再起動します。

その結果、w3wp.exeのメモリ消費は3GB強で安定するようになり、翌日には各クライアントが正常に更新プログラムを取得できるようになりました。

大規模環境向けの追加チューニング

SCCMのSoftware Update Pointから更新プログラムを取得するWSUSクライアントが多数ある場合(特に初回取得時)、[詳細設定]で以下のパラメータ値を引き上げることも有効です。

  • キューの長さ(Queue Length):1,000 → 25,000
  • [Service Unavailable] 応答タイプ:HttpLevel → TcpLevel
  • エラー間隔(Failure Interval・分):5 → 30
  • 最大エラー数(Maximum Failures):5 → 60

適用が推奨されるWSUSの更新プログラム

Windows Server 2008 R2上のWSUS 3.0 SP2には、以下の更新プログラムのインストールが推奨されます。

  1. KB2720211
  2. KB2734608

また、Windows Server 2012 R2上のWSUS 4.0には、以下が推奨されます。

  • KB2919442
  • KB2919355
  • KB3095113
  • KB3159706
  1. Windows Updateエラー 0x8024D007の原因と解決策を徹底解説

    Windows Updateエラー 0x8024D007の解決策とは? エラーコード 0x8024D007 は、Windows Update の実行時に比較的多く報告されるエラーの一つです。この記事では、エラーが発生する原因と、実際に試せる具体的な解決方法をわかりやすく解説します。 エラー 0x8024D007 が発生する原因 技術系フォーラムやブログを調べてみると、このエラーに関する相談が数多く見つかります。典型的な質問例は以下のとおりです。 「Windows Vista(Home Premium)を使っています。Windows Update で『更新プログラムの確認』をクリックすると、次

  2. Windows Update のエラー 0x80244022・0x80072ee2 を解決する6つの対処法

    Windows Update のエラー 0x80244022 または 0x80072ee2 は、Windows が Windows Update サーバーに接続できず、更新プログラムを取得できない場合に発生します。原因としては、破損したレジストリファイルやキー、誤った日付・時刻の設定、ファイアウォールの設定など、さまざまな要因が考えられます。 このガイドでは、Windows 10 / 8 / 7 で Windows Update エラー「0x80244022」や「0x80072ee2」が発生した際の解決方法を、手順ごとに詳しく解説します。 Windows Update エラー 0x80244