Ошибка 0x80244022 и проблема остановки WsusPool из-за недостатка памяти
У одного из заказчиков столкнулся с интересной проблемой установки обновлений на клиентах с Windows 7. Обновления распространяются посредством сервера WSUS, интегрированного в среду System Center Configuration Manager. На SCCM сервере используется Windows Server 2008 R2, версия WSUS соответственно — WSUS 3.0 SP2. Должны обновляется клиентские ПК с Windows 7 SP (порядка 2000 компьютеров).
Клиентские компьютеры не могут получить обновления с Software Update Point, в журналах при этом фиксируется ошибка 0x80244022.
На клиентской стороне журнал WUAhandler.log содержит ошибки:
OnSearchComplete - Failed to end search job. Error = 0x80244022.
Scan failed with error = 0x80244022.
В журнале службы Windows Update WindowsUpdate.log тоже множество ошибок вида:
2017-08-09 11:02:04:371 612 4858 Setup WARNING: SelfUpdate check failed to download package information, error = 0x80244022
2017-08-09 11:02:04:371 612 4858 Setup WARNING: SelfUpdate check failed to download package information, error = 0x80244022
2017-08-09 11:02:04:371 612 4858 Agent * WARNING: Skipping scan, self-update check returned 0x80244022
2017-08-09 11:02:04:371 612 4858 Agent * WARNING: Exit code = 0x80244022
2017-08-09 11:02:04:371 612 4858 Agent WARNING: WU client failed Searching for update with error 0x80244022
2017-08-09 11:02:04:371 612 4abc AU # WARNING: Search callback failed, result = 0x80244022
2017-08-09 11:02:04:371 612 4abc AU # WARNING: Failed to find updates with error code 80244022
На стороне сервера при этом в логе WSUSCtrl.log есть ошибка:
request failed with HTTP status 503: Service Unavailable
Failures reported during periodic health check by the WSUS Server SPB-MAN1. Will retry check in 1 minutes
Т.е. по логу видно, не отвечает сайт WSUS отвечает. Действительно, если открыть URL адрес WSUS Administration (http://SCCM-Srv1:8530), появляется ошибка:
HTTP Error 503. The service is unavailable
Открыв консоль управления IIS Manager, я увидел что пул, отвечающий за работу WSUS (WsusPool) находится в отключенном состоянии.
После ручного запуска пула, через 20-30 минут он опять падет. В журнале системы при этом обнаружилось интересное сообщение Event ID 5117 WAS с текстом:
A worker process serving application pool ‘WsusPool’ has requested a recycle because it reached its private bytes memory limit
По умолчанию в системе лимит используемой памяти для пула WsusPool
ограничен 1,8 Гб. При превышении этого значения (а это может запросто случится при большом количестве клиентов WSUS, особенно при первом сканировании), пул сбрасывается. Чтобы понять сколько памяти использует ваш пул WSUS, достаточно посмотреть за процессом w3wp.exe. При превышении лимита 1,8 Гб, процесс перезапускается. Таким образом для решения проблемы нужно увеличить объем выделяемой памяти.
Сделать это можно из консоли IIS Manager, выбрав Application Pools -> ПКМ WsusPoll -> Recycling, увеличив значение в поле Private memory usage (in KB).
Насколько увеличить, решайте сами, рекомендую начать с 3-4 Гб. В моем случае для 2000+ клиентов WSUS, оказалось достаточно 6 Гб памяти.
Размер выделяемой памяти также можно изменить и из раздела расширенных настроек пула (Advanced Settings), увеличив значение в поле Private memory usage (KB).
Осталось перезапустить пул через кнопки Start/Stop или Recycle.
После чего процесс w3wp.exe перестал потреблять более 3 Гб RAM. А на следующий день на компьютерах стали закачиваться обновления.
Совет. При большом количестве клиентов WSUS, получающих обновления с SCCM Software Update Point (особенно получающих обновления впервые), в расширенных настройках пула можно увеличить следующие параметры:
- Queue Length с 1000 до 25000
- “Service Unavailable” Response Type — c HttpLevel на TcpLevel
- Failure Interval (minutes) – с 5 до 30
- Change ‘Maximum Failures’ – с 5 to 60
Кроме того, рекомендуется установить на WSUS 3.0 SP2 под Windows Server 2008 R2 следующие обновления:
На WSUS 4.0 на Windows Server 2012 R2 такие:
- KB2919442
- KB2919355
- KB3095113
- KB3159706
Windows Server 2008
Ошибка 0x80244022 и проблема остановки WsusPool из-за недостатка памяти