我有关闭了自动更新的Windows 7 PC。我大约每月一次进行批量更新。但是每次“检查更新”都需要15到30分钟。我不明白为什么检查更新会这么慢?我想知道后台发生了什么。它在计算哈希吗?我启用了自动更新的PC每次启动时都会遭受相同的命运吗?(仅我不知道)?

评论

似乎后台应用程序正在运行。您的系统性能如何?

我的电脑运行正常。 CPU几乎不会超过10%。在“搜索更新”时,我没有发现任何异常。

为什么首先要禁用Windows Update?它可以在后台运行,直到它要求您重新启动时您甚至都不会注意到,而不必立即进行此操作。

我喜欢批量更新,以便在出现问题时可以回滚。后台更新很难跟踪,回滚也很耗时。通过手动更新,我还可以选择在继续之前查看更改。另外,有时我会帮助人们清理PC并遇到相同的问题。

@someuser您可以两全其美:将WU配置为下载更新,但让我选择是否安装它们,这将在后台扫描所需的更新,但未经您的同意绝不安装它们。它们不会自动安装,但是当您执行每月修补程序时,所有适用的更新都会列出。

#1 楼

更新检查部分太慢了,因为:Windows 7使用基于组件的服务,这意味着Windows Update必须努力工作才能确定文件和组件的依赖关系/相互依赖关系,保留旧文件/组件的并行版本,同时仍然可以卸载单个更新/组件,但又不破坏任何其他更新/组件,同时还要考虑优先级,上帝知道还有什么。完成所有这些操作的代码必须非常复杂。
Windows 7 64位必须维护每个更新的32位和64位版本。
Windows必须维护以下版本的GDR和LDR版本每个更新,这意味着在Windows 7 64位上,每个更新都会获得32位GDR,32位LDR,64位GDR,64位LDR。
Windows Update背后的代码效率很低,可能由于其概念上的复杂性。根据过去几年的观察,随着已发布更新的总数增加,更新检查时间几乎以指数方式增加。对我来说,这表明正在使用某种递归算法,也许是确定超程序或解决依赖关系。

对我们来说不幸的是,Microsoft不喜欢谈论Windows内部机制,因此我们最终不得不弄清楚它的含义。为自己或推测。

评论


这似乎也可以解释为什么安装更新如此之慢。有什么可以做的吗?

–迈克尔·汉普顿
15年7月2日在4:45

@MichaelHampton以我的经验,三件事可以帮助您:1获得具有出色单线程性能和大CPU缓存(例如3.4 GHz i5 / i7 Haswell)的PC,2获得SSD硬盘,3禁用实时监视组件更新时安装您的AntiVirus软件。

– misha256
2015年7月2日,下午5:04

@MichaelHampton有些人给了您错误的信息。 MS Update Server通常非常快。通常,扫描PC / HDD来进行更新也非常快。下次进行更新检查时,请先打开资源监视器,以便您自己查看更新的哪些部分花费了很多时间。您会发现,最初需要花费一些时间来调试硬盘并与Internet通讯。完成之后,您将看到一个CPU内核永久处于100%的状态。那就是您PC上的更新引擎(无效率地)弄清楚下一步该怎么做。

– misha256
15年7月2日在5:39



@someuser是的,的确如此。但是,您正在查看总体CPU利用率。查看单核的CPU使用率。在Windows Update期间,您将看到一个核心永久性地达到了100%。 Windows Update引擎显然是CPU绑定到单个线程的。当然,RAM的使用率也很高,但这不是速度慢的原因。是更新引擎的算法复杂和/或效率低下。

– misha256
2015年7月2日在21:44



Debian如何完成所有这些工作,并且只需几秒钟到5分钟(如果这是一个很大的更新)。由于CPU使用率极低,因此它可以在后台安静地运行,您可以部分关闭它,而几乎不需要重新启动。

–ctrl-alt-delor
17 Mar 11 '17 at 16:46

#2 楼

现有答案已解决了该问题的几个方面。
我将尝试通过一般性列出原因来将它们联系在一起,
而无需重复已经说过的内容:


Microsoft Windows Update机制非常复杂,
不幸的是,这也意味着复杂的
WU需要支持数量众多的硬件和软件组合
WU需要在Windows中应用更新正确的顺序
Windows 7是一个较旧的系统,并且SP2已过期,并且可能永远都不会到来,这需要进行大量更新。
最近几年,Microsoft承受着巨大的压力,需要修复大量的操作系统
安全问题,导致出现了很多忙碌的修复程序,
然后修复了第n代的修复程序,等等。
Microsoft无法充分优化更新机制,
通常是指数算法,会导致蛮力算法,速度相当慢。
Microsoft的WU服务有时会让人负担沉重。

让我们更详细地了解这些要点。

Windows Update的复杂性

更新发布后,随着时间的推移,它可以进入三个附加的不同阶段:修订,取代和到期。

更新修订:对以前发布的更新进行更改时,称为更新修订,其中一些下载已更改。这是部分而非完全的更新替换。

被取代的更新:这是一个或多个以前发行版的完整替换。有时Microsoft会将多个发行版包装到一个程序包中,然后该程序包将替换其封装的更新。

过期的更新:这些更新已从有效更新列表中删除。此类更新不再适用,并且不会检测到安装。大多数情况下,更新被替换为更新后就会过期。

更新还具有依赖性机制,这意味着某些更新
可能需要先应用其他更新。

过期的更新对WU性能有问题,因为不幸的是,它们并未从计算机中删除,因此它们仍然参与计算,
其中有很多。
使用磁盘清理来删除过时的Windows Updates可以实现某些改进(首先获取备份磁盘)系统驱动器的映像,因为WU也非常脆弱)。

WU计算

由于存在大量可能的组合,Microsoft将WU服务器上的所有更新保留在
采用树修剪算法来确定需要应用哪些更新,该修剪算法考虑了客户端已安装的硬件和软件,以及所有已经安装,这本身就是一个很大的事实,需要在pruni上成功应用所有事实ng。

不能保证算法成功,这意味着WU完全能够破坏操作系统甚至使其无法启动。
这完全可以理解,例如更新A1,具有修订版A2,其中在A1和A2之间发布了依赖于A的更新B。
现在,确定安装顺序应为A1-B-A2还是A1-A2-B。错误的决定可能是致命的。

WU服务器负担过重


截至2008年,Windows Update拥有大约5亿个客户端,每天处理约3.5亿次唯一扫描,并且平均保持与客户端计算机的同时连接数为150万。在Microsoft通常发布新软件更新的当天星期二的补丁程序中,
出站流量每秒可能超过500吉比特。


这些数字现在可能已经增加了一倍,并解释了为什么有时无法访问WU服务器。
我正在使用“检查更新但让我选择”的WU选项,而我自己使用经验是,检查更新的日期和时间有时比我愿意等待的时间长,需要推迟。

Windows 7的悠久历史

> Windows 7于2009年7月22日发布。
大约17个月后,Service Pack 1(SP1)于2011年2月22日发布。
大约是4.5年前,这意味着SP2已发布。

很早就可以了。

Service Pack的好处是,安装它会清除整个
更新历史记录,因此实际上WU从零开始,就像在
之后一样Windows的全新安装。当然,由于要考虑的更新较少,因此可以大大加快所有计算的速度。

自SP1以来,现有更新的数量之多说明了当今WU计算为何如此缓慢。对于Microsoft而言,可以通过升级到更新的Windows 8.1或Windows 10来“简单地”解决该问题,因此WU
将考虑较少的更新。

结论

由于Microsoft仍将继续对Windows 7应用大量更新,
随着时间的流逝,WU只会继续减慢速度。

一种可能的优化方法是删除过时的Windows更新。
另一种方法是使用WU选项“检查更新,但让我选择”,
,并在清晨或深夜检查更新。

大多数更新也适用于Windows 8和10,
,因此只有在Windows 10
即将发布时,Microsoft WU服务器的负担才会增加。微软似乎还根据自己的政策分配了其WU服务器的带宽
,重点是为更新的操作系统提供服务,因此我们应该期望Windows 7的另一个速度下降
Windows 10发布后,以及Windows 10的更新速度将大大提高。

如果WU太慢,唯一真正的解决方案是升级到Windows的更高版本。

好消息:适用于Windows 7(和8.1)的SP2已到

Microsoft已发布了实际上适用于Windows 7和8.1的SP2。
此更新无法从以下版本获得Windows Update由于某种未知的原因,因此必须手动下载并安装。

在文章中了解如何获取它:Microsoft全面改革Windows 7和8.1更新-但不要称它为服务包。

评论


在Windows 10预览版中检查更新非常快。

–迈克尔·汉普顿
15年7月4日在16:16

我觉得检查更新仍然是CPU和内存密集型操作。但是也许编写程序时会不时产生CPU,因此不会降低PC的速度。我想知道是否对于那些打开了自动更新的用户,每次PC打开时都会进行计算吗?

–一些用户
15年7月6日在16:11

@Renju的回答声称存在缓存,但是根据我的经验,即使在上一次检查之后立即进行更新检查也同样缓慢。我自己不知情的意见是,修剪同时在WU服务器和客户端上进行。我猜这是在服务器上通过硬件安装的Microsoft产品/操作系统;在客户端上通过计算机上当前已安装的更新。

–harrymc
2015年7月6日在16:43



此猜测是由张贴者关于使用大量RAM但未使用大量CPU的WU的评论引起的。这与从Microsoft下载到本地内存中的大型更新树,以及可能需要Microsoft提供更多信息的本地修剪操作是一致的。

–harrymc
15年7月7日在15:50

“不能保证算法成功,这意味着WU完全有能力破坏OS甚至使其无法启动。这完全可以理解。”这真是胡说八道。

–山姆·沃特金斯(Sam Watkins)
2015年12月9日,12:20

#3 楼

多年来,此问题的来龙去脉,并进行了不同的修复,因此,这是我截至2016年1月5日为止该问题的更新指南。


检查下面的“编辑”部分,从2016年5月开始全新安装后,有一种更快的方法来完全更新Windows 7 SP1。


当我重新安装带有SP1的W7或Windows有问题时,这就是我要做的

如果未安装Service Pack 1,请在遵循本指南之前进行安装。

下载KB-3138612并将其保存在可以找到的位置稍后

下载SUR工具并将其保存到同一位置

Windows加载之前重新启动PC并断开与互联网的连接,这很重要,因为在每次启动时Windows都会检查更新中的更新后台,这将开始检查更新是否再次挂起,并且将阻止安装已下载的软件包,直到完成检查为止,因此请在W之前断开与互联网的连接内部负载可防止这种情况。

一旦启动,请安装KB-3138612,如果需要重新启动,请保持断开连接,并保持与Internet的连接。

现在安装SUR工具包,这是一个大包,将安装许多更新以及清理和修复Windows更新存储。它还将减少以后需要安装更多的Windows更新。

重新安装SUR软件包后,连接到Internet并进行手动Windows Update,它现在应该可以更快地工作。即使进行了这些修复,我仍然看到某些W7 PC可能需要一个小时才能完成从手动从控制面板启动的更新检查。

如果您还有其他Windows更新问题,并且已安装上述2个更新,请下载此Microsoft Windows Update fixit工具(右键单击“另存为”)运行该工具,然后选择积极的模式以完全重置Windows更新。重新启动,然后再次从“控制面板”尝试Windows Updates。此工具可解决其他Microsoft Fixit工具失败时的问题,至少以我的经验而言。

更新:Microsoft已发布了Windows 7 SP1的庞大更新汇总,类似于Service Pack,但它们不这样说。全新安装后,这将使Windows 7的更新速度大大提高,不再有Windows更新问题并且无需重启。此更新汇总将使系统当前更新为2016年4月(星期二)。

该更新不是通过Windows Update发布的,您必须使用Internet Explorer进行获取,打开IE并转到该地址


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


在搜索框中键入3125574并点击输入密钥。



现在您将看到此汇总的所有版本,选择所需的版本并将其下载到以后可以找到的地方。



还请使用Windows Update目录页下载并首先安装此更新3020369,这是汇总的先决条件,然后安装3125574,也请确保已断开连接应用这些更新时访问Internet。

评论


很棒的信息,谢谢。我目前正在努力从全新安装的W7中获取低规格笔记本电脑的最新信息,所以今晚我将为您的过程做个尝试。在安装SP1 Redist之后,您有没有注意到WU仍然想要下载并安装所有SP1之前的更新以及SP1本身?如果是这样,您是否知道如何避免呢?我最近经常看到这种情况,并且我假设我只是以错误的顺序进行了某些操作。 (我通常去安装W7>安装芯片组/ gfx驱动程序>安装SP1 redist>检查更新。)

– blackworx
16-3-22在6:32



我已经看到了这种行为,我只是让它重新下载并安装,通常在kb安装程序运行时,它会看到它们已安装并移至链中的下一个更新,基本上它会跳过那些已安装的更新。 SUR工具应解决此问题。

–摩押
16-3-22在17:32

离线安装KB-3138612(下载,切断互联网连接,安装)后,这对我有用。然后,我重新启动,MS更新提示在几分钟之内下载软件包。

– AndyC
16年5月13日在10:36

#4 楼

当您在扫描过程中使用ETW / WPR / WPA检查CPU使用率时,您会看到CPU使用率来自wuaueng.dll!CUpdatesToPruneList::AddSupersedenceInfoIfNeeded,这从wuaueng.dll!CAgentUpdateManager::FindUpdates调用。 AddSupersedenceInfoIfNeeded方法是最慢的事情。这会执行名称所指示的内容,并查看是否仍需要或取代提供的/已安装的Windows 7更新(已被更新的过时/替换)。这很慢。

使用2016年6月的最新Windows Update Client更新(它是Windows 7 July 2016更新汇总)的一部分,更新搜索又很快了。



下载:



32位:https://www.microsoft.com/zh-cn/download/details.aspx?id=53335


64位:https://www.microsoft.com/zh-cn/download/details.aspx?id=53332




我只花了1分钟多一点的时间即可搜索新的更新。为了加快更新KB3172605的安装,请停止WindowsUpdate服务(net stop wuauserv)。

当您安装多个MSU更新时,此WU服务停止技巧可以大大提高安装速度:

@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个大更新就可以达到当前补丁程序级别。不再需要这种缓慢的检查。

评论


似乎KB3138612可以在大多数W7sp1全新安装中对其进行修复,但是我昨天进行了一次更新,并且仍然花费了一个多小时来提供更新列表,而且我注意到在大多数W7 PC上,当它开始下载屏幕时不会刷新更新,并且保持0%的下载速度,直到全部下载并开始安装它们为止,Windows Update仍然损坏。

–摩押
16年4月24日在16:54

#5 楼

如果过去有过XP更新的经验,那么他们有时会在其中放一个指数时间算法。一旦有很多更新,那将永远。当前,Win 7更新处于类似情况。需要花费很长时间,尽管目前尚无官方解释。有趣的是,当新版本推出时,“只是发生”(对于旧版本)。愤世嫉俗的我不禁会想像有人可能会故意地希望这种情况发生,就像[旧] Windows一样慢?您需要一个新版本。也许这只是开始假期的MS方法。

有一种针对WU慢速的修补程序,该修补程序不会自动提供(即通过更新本身):https:// support .microsoft.com / en-us / kb / 3102810可惜的是,它对我的​​情况没有真正的影响,我已经在两台不同的计算机(一台32位和一台64位)上进行了尝试。自10月以来也已经存在,所以可能不是最新一期。

#6 楼


当今大约有十亿台运行Windows的PC。每台PC都有硬件,附件,操作系统版本,语言,IE,设备
驱动程序版本,各种补丁程序级别的Microsoft软件,安全性
更新等的某些组合。Windows Update系统具有梳理所有这些
组合,为单个PC提供正确的更新。每个
更新都具有包括依赖项和“上级”
结构的属性。

扫描的第一步(首次运行)是确定操作系统版本,
SP,语言,PC制造商,以修剪
PC可能更新的树。根据第一次扫描,将一组可能的更新ID发送给设备,然后本地客户端计算已安装,取代等的更新,然后将该列表发送给服务器,并
还在本地缓存副本以供后续扫描。服务器
响应客户端请求,以更新内容(以适当的UI语言显示)在UI中显示的描述等。

每天一次,自动更新客户端在后台进行一次检查更新,
并刷新已安装更新的本地缓存,因此
后续扫描只是一个增量又快这些文件存储在PC上的
%windir%\ softwaredistribution文件夹中。

以前下载的更新也执行类似的过程。
该服务不会重新下载。包装。


找到了这篇文章,这将有助于我们至少了解搜索过程中的实际情况。它写得很漂亮。所以我就这样发布它。您可能会在这里找到原始帖子

当我将Windows更新设置更改为Check for updates but let me choose whether to download and install them时,检查安装更新所需的时间发生了明显变化。

评论


“ Windows Update系统必须对所有这些组合进行分类,以为单个PC提供正确的更新。”是的,这听起来像是SELECT操作。如果只有用于快速搜索大型表的算法,则可以将其称为“索引编制”。那会有所帮助。

– David Tonhofer
16年2月1日在17:17

#7 楼

我认为最好的选择是仅启用Windows更新并切换到允许您下载更新但不能自动安装的选项。这样,您无需等待检查或后台文件下载即可获取所需的安装。

现在,回答为什么它很慢。我认为这完全可以归结为Windows更新是在构建时就减少了对用户的明显影响这一事实。它使用BITS服务(后台智能传输服务)来检查和下载更新。

同样,此服务的重点是以一种不会破坏用户的方式进行工作。由于Microsoft从未打算让客户每月打开和关闭更新服务,因此设计故意降低了速度。

您可能要研究的是获取自己的WSUS服务器设置。这样,您可以像企业管理员一样拒绝更新,并且可以将选择的更新应用于或拒绝您拥有的所有Windows设备。使琐事有选择地更新,减少了琐事。

评论


现在有一个想法:故意放慢速度。不过,这确实让我很难在重新安装后立即进行更新,这就是我现在遇到的情况。如果可能的话,某种加快速度的方法(无需设置非常大的WSUS服务器)将很有用;等待几天才能使用计算机将不是一件好事...

–迈克尔·汉普顿
15年7月1日在18:48



只保留更新但将其设置为(只需下载。不自动安装)怎么样?这样,您可以选择可用的内容,除非先获得批准,否则它不会安装任何内容。该选项似乎可以解决您的所有条件。

– Geruta
15年7月1日在19:01

是的,但我仍然必须等待。等一下等一下等一下...

–迈克尔·汉普顿
15年7月1日在19:03



如果您在凌晨3点让它检查更新,并且始终保持PC处于休眠状态,则它将在睡眠时检查并下载。使其完全可用,并在您起床时可供您使用。

– Geruta
15年7月1日在19:04

有第三方工具可以下载Windows更新,MBSA扫描非常快,它将为您提供所有缺少的更新的列表。自从Microsoft意识到对于具有较少RAM的计算机而言,它们的实现是多么痛苦(并且表现不佳),最近还为Windows 7提供了Windows Update补丁(KB3050265)。

–ssnobody
15年7月1日在19:29

#8 楼

之所以变慢,是因为Windows Update和其他几个Windows系统组件使用Microsoft JET Blue数据库引擎,该引擎性能极差,并且占用大量资源。

就像其他人提到的那样, Windows Update代码本身具有某种程度的递归,随着更新数量的增加,导致性能下降。

#9 楼

只是添加另一个数据点。最近,我不得不启动Vista PC。我将Vista从SP1手动升级到SP2,但是检查更新需要花费很多时间。 24小时以上没有任何反应。

我进行了一次谷歌搜索,找到了一个解决方案,其中包括安装以下更新:

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也可能存在类似的情况。

#10 楼

我遇到了这个问题,我所做的是让Windows Update在新安装的计算机上首次在夜间运行。成功完成此操作的提示:


转到能源选项,将待机时间设置为“从不”
打开自动Windows Update。默认时间03:00 AM是可以的,因为搜索过程也需要时间
还建议您第一次进行“ Windows更新需要更新某些组件...”过程(与其他程序相比,速度较快)如果是Windows 7,则超过200个更新)

正确更新所有内容后,您会发现安装了大量补丁(约200个)。 Windows还对Windows Defender进行了碎片整理和运行。

之后,其余的Windows Update周期(搜索更新-安装-重新引导-搜索更新-安装-重新引导-搜索更新。 ..直到#更新变为0),工作速度要快得多。

#11 楼

不进行哈希处理,但是可以,它进行了大量检查(与某些DLL文件版本一样深)。无论使用什么系统,速度都很慢。

作为解决方案,请将其关闭,白天或黑夜时不需要太多系统,将其打开,强制其检查更新并让它们全部安装。

评论


不建议关闭Windows Update。当发现零日漏洞时,Microsoft会在其正常计划之外立即推出关键更新(如果可用)。禁用Windows Update的计算机将无法接收它,并且在修补其他计算机时将很容易受到攻击,因此受到攻击的可能性会急剧上升。

–gronostaj
15年6月26日在18:33

从统计上讲,这些更新会产生太多异常情况,无法证明以这种方式进行漏洞预防。如果找到ZDV,则可以安装该特定的关键更新,而不会影响其他任何内容。

–注意
15年6月30日在11:35