121

У меня на ПК с Windows 7 отключено автоматическое обновление. Я делаю обновления в пакетном режиме один раз в месяц или около того. Но каждый раз "проверка обновлений" занимает от 15 до 30 минут. Я не понимаю, почему проверка обновлений может быть такой медленной? Мне интересно, что происходит на заднем плане. Это компьютерный хэш? Неужели мои ПК с включенными автоматическими обновлениями испытывают одну и ту же участь каждый раз при загрузке (только то, чего я не знал)?

12 ответов12

101

Часть проверки обновлений очень медленная, потому что:

  • В Windows 7 используется компонентное обслуживание. Это означает, что Центру обновления Windows приходится нелепо усердно работать над определением зависимостей / взаимозависимостей между файлами и компонентами, поддерживать параллельные версии старых файлов / компонентов, в то же время позволяя удалять отдельные обновления. / компоненты, но не нарушая никаких других обновлений / компонентов, все время с учетом превосходства и бог знает что еще. Код, который делает все это, должен быть адски сложным.

  • 64-разрядная версия Windows 7 должна поддерживать как 32-разрядные, так и 64-разрядные версии каждого обновления.

  • Windows должна поддерживать обе версии GDR и LDR для каждого обновления, что означает, что в 64-разрядной версии Windows 7 вы получаете 32-разрядную GDR, 32-разрядную LDR, 64-разрядную GDR, 64-разрядную LDR для каждого обновления.

  • Код Windows Update крайне неэффективен, вероятно, из-за его концептуальной сложности. Мои наблюдения за последние несколько лет состоят в том, что, поскольку общее количество выпущенных обновлений увеличилось, время проверки обновлений увеличилось почти экспоненциально. Для меня это указывает на то, что используются какие-то рекурсивные алгоритмы, возможно, для определения превосходства или разрешения зависимостей.

К сожалению для нас, Microsoft не любит говорить о внутренностях Windows, поэтому нам приходится самим разбираться в этом или размышлять.

60

Несколько аспектов проблемы были рассмотрены в существующих ответах. Я попытаюсь связать их вместе, перечислив причины в общем виде, не повторяя того, что уже было сказано:

  1. Механизм Microsoft Windows Update чрезвычайно сложен, что, к сожалению, также означает сложный
  2. WU необходимо поддерживать неисчислимое количество аппаратных и программных комбинаций
  3. WU необходимо применить обновления в правильном порядке
  4. Windows 7 - более старая система, и SP2 просрочен и, вероятно, никогда не появится, что делает очень много обновлений
  5. В последние годы Microsoft была под большим давлением, чтобы исправить многочисленные проблемы безопасности, которые привели к очень многим беспокойным исправлениям, затем исправлениям и так далее для n-го поколения
  6. Microsoft не смогла достаточно оптимизировать механизм обновления, который в целом является экспоненциальным алгоритмом, что приводит к довольно грубому алгоритму перебора.
  7. Серверы Microsoft WU иногда перегружены.

Давайте посмотрим на эти моменты более подробно.

Сложности Центра обновления Windows

После того, как обновление выпущено, оно может вступить в три дополнительные фазы: изменения, замена и истечение срока действия.

Обновления обновлений . Когда вносятся изменения в ранее выпущенное обновление, оно называется «Обновление обновлений», в котором изменяются некоторые фрагменты загрузки. Это частичная, а не полная замена обновления.

Замененные обновления: это полная замена предыдущего выпуска или выпусков. Иногда Microsoft объединяет несколько выпусков в один пакет, и этот пакет заменяет его инкапсулированные обновления.

Обновления с истекшим сроком действия: это обновления, удаленные из списка действительных обновлений. Такие обновления больше не применяются и не будут обнаружены для установки. В большинстве случаев срок действия обновления истекает после его замены Замененным обновлением.

Обновления также имеют механизм зависимости, что означает, что для некоторых обновлений могут потребоваться другие обновления, которые должны применяться первыми.

Обновления с истекшим сроком действия являются проблематичными для производительности WU, поскольку, к сожалению, они не удаляются с компьютера, поэтому они все еще участвуют в вычислениях, а их так много. Некоторое улучшение может быть достигнуто с помощью очистки диска для удаления устаревших обновлений Windows (сначала создайте резервный образ диска системного диска, поскольку WU также очень хрупкий).

WU Расчеты

Из-за огромного количества возможных комбинаций Microsoft хранит все обновления на серверах WU в формате огромного дерева. Решение о том, какие обновления необходимо применить, выполняется с помощью алгоритма сокращения деревьев, который учитывает установленное клиентское оборудование и программное обеспечение, а также все обновления, которые уже установлены, что само по себе является большой совокупностью фактов, которые требуют все будет успешно применено при сокращении.

Алгоритм не гарантированно будет успешным, а это означает, что WU вполне способен уничтожить ОС или даже сделать ее не загружаемой. Это вполне понятно, например, взять обновление A1, имеющее ревизию A2, где обновление B в зависимости от A было выпущено между A1 и A2. Теперь поймите, должен ли порядок установки быть A1-B-A2 или A1-A2-B, когда неправильное решение может быть смертельным.

Перегруженные серверы WU

В Википедии есть что сказать о статистике Центра обновления Windows :

По состоянию на 2008 г. Центр обновления Windows имел около 500 миллионов клиентов, обрабатывал около 350 миллионов уникальных сканирований в день и поддерживал в среднем 1,5 миллиона одновременных подключений к клиентским машинам. Во вторник Patch, в день, когда Microsoft обычно выпускает новые обновления программного обеспечения, исходящий трафик может превышать 500 гигабит в секунду.

Эти цифры, вероятно, уже удвоились, и объясняют, почему серверы WU иногда недоступны. Я использую опцию WU «Проверить наличие обновлений, но позвольте мне выбрать», и мой собственный опыт показывает, что бывают дни и времена, когда проверка обновлений занимает больше времени, чем я готов ждать, требуя отсрочки.

Долгая история Windows 7

Windows 7 была выпущена 22 июля 2009 года. Примерно через 17 месяцев пакет обновления 1 (SP1) вышел 22 февраля 2011 года. Это было около 4,5 лет назад, что означает, что SP2 давно назрел.

Хорошая сторона пакета обновления заключается в том, что его установка стирает всю историю обновлений, так что фактически WU запускается с нуля, точно так же, как после новой установки Windows. Это, конечно, значительно ускоряет все расчеты, поскольку требуется меньше обновлений для учета.

Огромное количество существующих обновлений, начиная с SP1, объясняет, почему вычисления WU такие медленные сегодня. Для Microsoft проблема может быть решена "просто" путем обновления до более новой Windows 8.1 или Windows 10, так что WU будет иметь меньшее количество обновлений, которые следует учитывать.

Заключение

Поскольку Microsoft все еще продолжает применять многочисленные обновления для Windows 7, WU будет только замедляться с течением времени.

Одной из возможных оптимизаций является удаление устаревших обновлений Windows. Другой вариант - использовать параметр WU «Проверять наличие обновлений, но позвольте мне выбрать» и проверять наличие обновлений рано утром или поздно вечером.

Большинство обновлений также применимо к Windows 8 и 10, поэтому нагрузка на серверы Microsoft WU будет только увеличиваться, когда Windows 10 скоро выйдет. Microsoft также, похоже, распределяет пропускную способность своих серверов WU в соответствии со своими собственными политиками, уделяя особое внимание обслуживанию более новых операционных систем, поэтому следует ожидать еще одного замедления для Windows 7 после выпуска Windows 10 вместе с непропорционально более быстрыми обновлениями для Windows 10.

Если WU слишком медленный, единственным реальным решением является обновление до более поздней версии Windows.

Хорошие новости: SP2 для Windows 7 (и 8.1) прибыл

Microsoft опубликовала то, что на самом деле является SP2 для Windows 7 и 8.1. Это обновление не будет доступно в Центре обновления Windows по неизвестной причине, поэтому его необходимо загрузить и установить вручную.

Читайте о том, как получить это в статье:
Microsoft пересматривает обновление Windows 7 и 8.1, но не называет это пакетом обновления.

21

Эта проблема появлялась и исчезала на протяжении многих лет с различными исправлениями на этом пути, так что вот мое обновленное руководство по этой проблеме на эту дату 5 января 2016

Проверьте раздел РЕДАКТИРОВАТЬ ниже, есть гораздо более быстрый способ полностью обновить Windows 7 SP1 после чистой установки с мая 2016 года.

Это то, что я делаю, когда переустанавливаю W7 с пакетом обновления 1 или у меня возникают проблемы с обновлением Windows, которые застряли при проверке обновлений.

Если Service Pack 1 не установлен, установите его, прежде чем следовать этому руководству.

Загрузите KB-3138612 и сохраните его там, где вы сможете найти его позже

Загрузите SUR Tool и сохраните его в том же месте

Перезагрузите компьютер и отключитесь от Интернета перед загрузкой Windows, это важно, потому что при каждой загрузке Windows будет проверять наличие обновлений в фоновом режиме, и это будет начинать проверку на наличие зависаний обновлений снова и будет препятствовать установке загруженных пакетов до завершения проверка, поэтому отключение от Интернета до загрузки Windows предотвращает это.

После загрузки установите KB-3138612, если требуется перезагрузка, сделайте это и не подключайтесь к Интернету.

Теперь установите пакет SUR Tool, это большой пакет, который установит множество обновлений, а также очистит и восстановит хранилище обновлений Windows. Это также сократит количество дополнительных обновлений Windows, которые необходимо установить позже.

После установки перезагрузки пакета SUR, подключения к Интернету и ручного обновления Windows, он должен работать намного быстрее. Даже после этих исправлений я видел, что некоторым ПК W7 требуется до часа, чтобы завершить проверку обновлений, если они запускаются из панели управления вручную.

Если у вас есть другие проблемы с обновлениями Windows, и установлены 2 вышеуказанных обновления, загрузите этот инструмент исправления Microsoft Windows Update (щелкните правой кнопкой мыши "Сохранить ссылку как"), запустите его и выберите агрессивный режим, чтобы полностью сбросить обновления Windows. Перезагрузитесь и попробуйте обновления Windows из панели управления снова. Этот инструмент исправляет проблемы, когда другие инструменты Microsoft Fixit дают сбой, по крайней мере, по моему опыту.

Обновление: Microsoft выпустила огромный накопительный пакет обновления для Windows 7 с пакетом обновления 1 (SP1), похожий на пакет обновления, но они так его не называют. Это значительно ускорит обновление Windows 7 после чистой установки, больше не будет проблем с обновлением Windows и многих перезагрузок. Этот накопительный пакет обновлений обновит систему до вторника апреля 2016 года.

Это не распространяется через Центр обновления Windows, вы должны использовать Internet Explorer, чтобы получить его, открыть IE и перейти по этому адресу

http://catalog.update.microsoft.com/v7/site/home.aspx

Введите в поле поиска 3125574 и нажмите клавишу ввода.

Теперь вы увидите все версии этого накопительного пакета, выберите ту, которая вам нужна, и скачайте ее там, где вы сможете найти ее позже.

Также используйте страницу каталога Центра обновления Windows, чтобы сначала загрузить и установить это обновление, 3020369, это является обязательным условием для накопительного пакета, затем установите 3125574, также обязательно отключите его от Интернета при применении этих обновлений.

9

Когда вы используете ETW/WPR/WPA для проверки загрузки процессора во время сканирования, вы видите, что загрузка процессора происходит из wuaueng.dll!CUpdatesToPruneList::AddSupersedenceInfoIfNeeded который вызывается из wuaueng.dll!CAgentUpdateManager::FindUpdates . Метод AddSupersedenceInfoIfNeeded - самый медленный . Это делает то, что указывает название, и выглядит, если предлагаемые / установленные обновления Windows 7 по-прежнему необходимы или заменены (устаревшие / заменены более новыми). Это очень медленно.

Благодаря последнему обновлению клиента Центра обновления Windows от июня 2016 года, которое является частью накопительного пакета обновления Windows 7 июля 2016 года, поиск обновлений снова выполняется быстро.

  1. Скачать:

На поиск новых обновлений у меня уходит всего чуть более 1 минуты. Чтобы ускорить установку обновления KB3172605, остановите службу WindowsUpdate (net stop wuauserv).

Этот трюк остановки службы WU значительно ускоряет установку, когда вы устанавливаете несколько обновлений MSU:

@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
FOR /R "%~dp0" %%A IN (*Windows6.1-KB*.MSU) DO (
        CALL :SUB %%~nA        
    ECHO= Installing KB!KB_NUM!        
    >NUL net stop wuauserv
    WUSA "%%A" /quiet /norestart)
ECHO= == Press any key to close the Window ==
>NUL PAUSE

GOTO :EOF

:SUB

SET "KB_NUM=%*"
FOR /F "DELIMS=-" %%B IN ("%KB_NUM:*-KB=%") DO SET "KB_NUM=%%B"

В Windows 10 Microsoft исправила проблему, следуя моему предложению, и делала обновления накопительными. Здесь вам нужно только 1 большое обновление, чтобы быть на текущем уровне патча. Эта медленная проверка больше не нужна.

3

Если прошлые опыты с обновлением XP являются какими-либо признаками, они иногда допускают использование алгоритма экспоненциального времени. Который, как только у вас есть много обновлений ... занимает навсегда. В настоящее время обновления Win 7 находятся в аналогичной ситуации; займет много времени, хотя пока нет официального объяснения этому последнему приступу медлительности. Интересно, что это "просто случается" (со старыми версиями), когда у них выходит новая. Циничный "я" не может не представить, что кто-то намеренно хочет, чтобы это произошло, по принципу [старых] Windows медленно? Вам нужна новая версия. Или, может быть, это просто способ MS начать курортный сезон.

Существует исправление для некоторой медлительности WU, которая не предлагается автоматически (например, через само обновление): https://support.microsoft.com/en-us/kb/3102810 Увы, это не имело реального значения в мой случай, и я попробовал его на двух разных компьютерах, один 32-разрядный и один 64-разрядный. Кроме того, это было с октября, так что это, вероятно, не для последнего выпуска [ы].

2

На сегодняшний день около миллиарда компьютеров работают под управлением Windows. Каждый ПК имеет некоторую комбинацию аппаратного обеспечения, аксессуаров, версии ОС, языка, IE, версии драйвера устройства, программного обеспечения Microsoft на различных уровнях исправлений, обновлений безопасности и т.д. Система Центра обновления Windows должна отсортировать все эти комбинации, чтобы предложить нужные обновления для индивидуальный ПК. Каждое обновление имеет свойства, включая зависимости и структуру "supercedence".

Первым шагом (первым запуском) сканирования является определение версии ОС, SP, языка, производителя ПК и удаление дерева вероятных обновлений для ПК. На основе этого первого сканирования на устройство отправляется вероятный набор идентификаторов обновлений, и локальный клиент вычисляет, какие обновления установлены, заменены и т.д., А затем отправляет этот список на сервер, а также кэширует копию локально для последующих проверок. Сервер отвечает на запрос клиента на обновления с описаниями и т.д., Которые отображаются в пользовательском интерфейсе (на соответствующем языке пользовательского интерфейса).

Один раз в день проверочное обновление выполняется клиентом автоматических обновлений в фоновом режиме и обновляет локальный кэш установленных обновлений, так что последующие проверки являются просто дельта и быстрыми. Они хранятся в папке% windir%\softwaredistribution на ПК.

Аналогичный процесс также выполняется для ранее загруженных обновлений. Служба не будет повторно загружать пакеты.

Нашел этот пост, который поможет нам хотя бы понять, что на самом деле происходит во время поиска. Это написано красиво. Поэтому я публикую это как таковой. Вы можете найти оригинальный пост здесь

Заметное изменение во времени, затраченном на проверку обновления для установки, произошло, когда я изменил настройки обновления Windows на Check for updates but let me choose whether to download and install them

1

На мой взгляд, вам лучше всего включить обновления Windows и переключиться на опцию, которая позволяет загружать обновления, но не устанавливать автоматически. Таким образом, вы можете получить то, что вы хотите установить, не дожидаясь проверки или загрузки фоновых файлов.

Теперь, чтобы ответить, почему это медленно. Я думаю, что это просто сводится к тому, что обновления Windows были построены с учетом уменьшения заметного влияния на пользователей. Он использует службу BITS (фоновая интеллектуальная служба передачи) для проверки и загрузки обновлений.

Опять же, цель этого сервиса - работать так, чтобы это не мешало пользователю. Скорости намеренно медленные, так как Microsoft никогда не планировала, что клиенты будут включать и отключать службу обновлений каждый месяц.

То, на что вы могли бы обратить внимание, - это настроить ваш собственный сервер WSUS. Таким образом, вы можете запретить обновления так же, как это делают корпоративные администраторы, и он может применять или отклонять выбранные обновления ко всем вашим устройствам Windows, которыми вы владеете. Создание этой рутины выборочного обновления, меньше рутины.

1

Это происходит медленно, потому что Центр обновления Windows и несколько других компонентов системы Windows используют ядро базы данных Microsoft JET Blue , которое страдает от заведомо плохой производительности и является общим источником ресурсов.

Как уже упоминалось, в самом коде Центра обновления Windows также наблюдается некоторая степень рекурсии, приводящая к снижению производительности по мере увеличения количества обновлений.

0

Просто чтобы добавить еще одну точку данных. Я недавно должен был поднять Vista ПК. Я вручную обновил Vista с SP1 до SP2, но проверка на обновление занимает вечность. Ничего не случилось в течение 24 часов.

Я провел поиск в Google, который нашел решение, которое включает установку следующих обновлений:

http://www.catalog.update.microsoft.com/Search.aspx?q=KB3205638%20vista http://www.catalog.update.microsoft.com/Search.aspx?q=KB4012583%20vista http://www.catalog.update.microsoft.com/Search.aspx?q=KB4015195%20vista http://www.catalog.update.microsoft.com/Search.aspx?q=KB4015380%20vista

После загрузки и установки обновлений вручную. Я запустил проверку обновлений в течение 10 минут, и он нашел 200 обновлений. Имейте в виду, что это для Vista, но я думаю, что, возможно, нечто подобное существует и для Windows 7.

0

У меня была эта проблема, и я впервые позволил Центру обновления Windows работать на новой машине. Советы, чтобы успешно сделать это:

  • Перейдите к параметрам энергопотребления, установите в режиме ожидания "никогда"

  • Включите автоматическое обновление Windows. Время по умолчанию 03:00 AM в порядке, так как процесс поиска также занимает время

  • Рекомендуется также выполнить процесс «Обновление Windows требует обновления некоторых компонентов ...» в первый раз (выполняется быстрее по сравнению с более чем 200 обновлениями в случае Windows 7)

Когда все будет обновлено правильно, вы обнаружите огромное количество исправлений (около 200). Windows также выполняла дефрагментацию и запускала обновления и сканирование Защитника Windows.

После этого оставшиеся циклы обновления Windows (поиск обновлений - установка - перезагрузка - поиск обновлений - установка - перезагрузка - поиск обновлений ... до тех пор, пока число # обновлений не станет равным 0) работают намного быстрее.

-1

Эй, я думаю, мой предыдущий ответ был не очень хорошим, но я дал хороший совет, как заставить компьютер работать быстрее.При новой установке Windows 7 я использую оригинальный, но все еще с установочным диском с обновлением slipstreamed, так или иначе, я полагаю, вы пытаетесь установить обновления kb3102810 и kb3050256, чтобы установить сразу после новой установки, эти два могут значительно увеличить скорость поиска и установки обновлений.

-2

Не хэширование, но да, оно проверяет много (так глубоко, как некоторые версии файла DLL). Это медленно, независимо от того, какую систему вы используете.

В качестве решения, отключите его, и когда день или ночь вам не понадобится слишком большая система, включите ее, заставьте ее проверять наличие обновлений и дайте им всем установить.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .