Данная статья посвящена устранению ошибки 0x8024401c при поиске и загрузке обновлений с сервера WSUS. Проявлятся она может на клиентских машинах на Windows 10, Windows 2012 и 2016 server.
Сам текст ошибки выглядит следующим образом:
There were some problems installing updates, but we’ll try again later. If you keep seeing this and want to search the web or contact support for information, this may help: (0x8024401c)
Если посмотреть список кодов ошибок обновления Windows, то увидим, что ошибка 0x8024401C означает превышение таймаута ответа от клиента: WU_E_PT_HTTP_STATUS_REQUEST_TIMEOUT — HTTP status 408 — the server timed out waiting for the request.
Возникать она может, скажем, при слишком большом числе обращений к серверу, недостатке его ресурсов и в других подобных ситуациях.
Сначала проверим журнал ошибок, где скорее всего увидим что-то подобное:
2020-01-19 14:11:24:870 816 1244 WS WARNING: There was an error communicating with the endpoint at 'http://server-wsus:8530/ClientWebService/client.asmx'.
2020-01-19 14:11:24:870 816 1244 WS WARNING: There was an error receiving the HTTP reply.
2020-01-19 14:11:24:870 816 1244 WS WARNING: The operation did not complete within the time allotted.
2020-01-19 14:11:24:870 816 1244 WS WARNING: The operation timed out
Проверим доступность страницы http://server-wsus:8530/ClientWebService/client.asmx , на которую указывают логи. Если все в порядке и сама страница обновления доступна, идем дальше(иначе - разбираемся в причинах на самом WSUS-сервере или доступности его)
Перед выполнением каких-либо действий, убеждаемся что установлены необходимые обновления на WSUS-сервере, если требуется - устанавливаем вручную.
Предположим, WSUS-сервер работает на Windows server 2012(для 2016 действия будут, в общем-то, аналогичны) - проверяем базу знаний Microsoft, где есть соответствующая статья KB3159706 (Update enables ESD decryption provision in WSUS in Windows Server 2012 and Windows Server 2012 R2)
Согласно статье, необходимо установить обновление KB3159706, а также выполнить некоторые действия, иначе может перестать открываться консоль WSUS.
Выполняем:
1.
"C:\Program Files\Update Services\Tools\wsusutil.exe" postinstall /servicing
2.
Проверяем, установлен ли компонент.NET Framework 4.5 -> HTTP Activation
Get-WindowsFeature -Name NET-WCF-HTTP-Activation45
Если нет, устанавливаем вручную (через Add Roles and Features Wizard)
3.
В случае, если используется SSL на сервере WSUS, редактируем C:\Program Files\Update Services\WebServices\ClientWebService\Web.config согласно рекомендациям KB3159706, иначе пропускаем пункт
4.
Редактируем файл config ( C:\Program Files\Update Services\WebServices\ClientWebService\web.config ), заменив строку<httpRuntime maxRequestLength="4096" /> на <httpRuntime maxRequestLength="204800" executionTimeout="7200"/>
5. Перезапускаем службу WSUS:
Get-Service -Name WsusService | Restart-Service -Verbose
6.
С помощью консоли IIS Manager вносим изменения в настройки пула WsusPool (Application Pools -> WsusPool -> Advanced settings)
- Private Memory Limit (KB) – ставим 0 ( убирается лимит на использование памяти рабочим процессов WSUS, значение может быть иным, если вы опасаетесь перегрузить сервер процессами WSUS)
- Queue Length — 25000 (увеличиваем длину очереди к пулу приложения, дефолтное значение - 10000)
- Limit Interval (minutes) — 15 (увеличиваем с 5 до 15 минут время для сброса счетчиков и выполнения CPU Throttling)
- Service Unavailable Response — TcpLevel (при старом значение HttpLevel клиенту возвращается ошибка HTTP 503, при значении TcpLevel соединение просто сбрасывается)
Затем в настройках WSUS Administration -> Advanced settings нужно изменить значение Connection Time-out со 180 до 320, увеличив время таймаута.
Перезапускаем IIS:
IISReset
Далее проверяем работу служб, и ждем следующего сеанса обновлений клиентов.
Аналогичным образом можно перенастраивать WSUS и в windows 2016, при обнаружении недостатков ресурсов.