![为什么检查 Windows 更新这么慢?](https://linux22.com/image/1443977/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%A3%80%E6%9F%A5%20Windows%20%E6%9B%B4%E6%96%B0%E8%BF%99%E4%B9%88%E6%85%A2%EF%BC%9F.png)
我的 Windows 7 电脑已关闭自动更新。我大约每月批量更新一次。但每次“检查更新”都要花 15 到 30 分钟。我不明白为什么检查更新会这么慢?我不得不怀疑后台发生了什么。是在计算哈希值吗?我的启用了自动更新的电脑每次启动时都会遭遇同样的命运吗(只是我不知道)?
答案1
这查询更新部分速度很慢是因为:
Windows 7 使用基于组件的服务,这意味着 Windows Update 必须非常努力地确定文件和组件的依赖关系/相互依赖关系,维护旧文件/组件的并行版本,同时还要能够卸载单个更新/组件,而不会破坏任何其他更新/组件,同时还要考虑取代和天知道的其他事情。完成所有这些工作的代码一定非常复杂。
Windows 7 64 位必须维护每次更新的 32 位和 64 位版本。
Windows 必须同时维护GDR 和 LDR每次更新都有不同的版本,这意味着在 64 位 Windows 7 上,每次更新您都会获得 32 位 GDR、32 位 LDR、64 位 GDR、64 位 LDR。
Windows Update 背后的代码效率极低,可能是由于其概念复杂性。过去几年来,我的观察是,随着发布的更新总数增加,更新检查时间几乎呈指数级增长。对我来说,这表明正在使用某种递归算法,可能是为了确定取代或解决依赖关系。
不幸的是,微软不喜欢谈论 Windows 的内部结构,所以我们最终不得不自己弄清楚或进行推测。
答案2
现有答案中讨论了该问题的几个方面。我将尝试通过以一般方式列出原因来将它们联系在一起,而不重复已经说过的内容:
- Microsoft Windows Update 机制极其复杂,不幸的是,这也意味着复杂
- WU 需要支持无数的硬件和软件组合
- WU 需要按正确的顺序应用更新
- Windows 7 是一个较旧的系统,SP2 已经过期,可能永远不会到来,因此需要进行很多更新
- 过去几年,微软承受着修复大量安全问题的巨大压力,这导致了非常多的忙乱修复,然后是修复的修复,直到第 n 代
- 微软未能对更新机制进行足够优化,该机制通常是一种指数算法,从而导致了一种相当慢的强力算法。
- 微软的 WU 服务器有时会负担过重。
让我们更详细地看一下这些要点。
Windows 更新的复杂性
更新发布后,它会随着时间的推移进入另外三个不同的阶段:修订、取代和到期。
更新修订:对之前发布的更新进行更改时,称为更新修订,其中下载的某些部分会发生变化。这是部分更新替换,而不是全部更新替换。
被取代的更新:这是对先前版本的完整替换。有时,Microsoft 会将多个版本打包成一个包,然后该包会替换其封装的更新。
过期更新:这些更新已从有效更新列表中删除。此类更新不再适用,并且不会被检测到安装。大多数情况下,更新在被取代更新替换后就会过期。
更新还具有依赖机制,这意味着某些更新可能需要首先应用其他更新。
过期更新对 WU 性能有影响,因为不幸的是它们不会从计算机中删除,因此它们仍然参与计算,而且数量非常多。使用磁盘清理可以实现一些改进删除过时的 Windows 更新 (首先备份系统驱动器的磁盘映像,因为 WU 也非常脆弱)。
WU 计算
由于可能的组合数量巨大,微软将所有更新都以巨大的树状结构保存在 WU 服务器上。决定需要应用哪些更新是通过树修剪算法完成的,该算法考虑了客户端安装的硬件和软件以及已安装的所有更新,而这本身就是一大堆事实,在修剪时需要成功应用所有这些事实。
该算法不能保证成功,这意味着 WU 完全有能力破坏操作系统,甚至使其无法启动。这是完全可以理解的,例如,假设更新 A1 具有修订版 A2,而依赖于 A 的更新 B 在 A1 和 A2 之间发布。现在想想安装顺序应该是 A1-B-A2 还是 A1-A2-B,错误的决定可能会带来致命的后果。
WU 服务器负担过重
维基百科有这样的说法Windows 更新统计信息:
截至 2008 年,Windows Update 拥有约 5 亿个客户端,每天处理约 3.5 亿次唯一扫描,并平均维持 150 万个客户端计算机的同时连接。在补丁星期二(微软通常发布新软件更新的日子),出站流量可能超过每秒 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 计算现在如此缓慢。对于微软来说,这个问题可以通过升级到较新的 Windows 8.1 或 Windows 10“简单”地解决,因此 WU 需要考虑的更新数量会更少。
结论
由于微软仍然继续对 Windows 7 进行大量更新,因此随着时间的推移,WU 的速度只会不断减慢。
一种可能的优化是删除过时的 Windows 更新. 另一个是使用“检查更新但让我选择”的WU选项,在清晨或深夜检查更新。
大多数更新也适用于 Windows 8 和 10,因此当 Windows 10 即将发布时,微软 WU 服务器的负担只会成倍增加。微软似乎还根据自己的政策分配其 WU 服务器的带宽,重点是为较新的操作系统提供服务,因此一旦 Windows 10 发布,我们应该可以预见 Windows 7 的速度会再次下降,同时 Windows 10 的更新速度会异常加快。
如果 WU 太慢,唯一真正的解决方案就是升级到更高版本的 Windows。
好消息:Windows 7(和 8.1)的 SP2 已经发布
微软已发布适用于 Windows 7 和 8.1 的 SP2。由于某些未知原因,Windows Update 无法提供此更新,因此必须手动下载并安装。
阅读文章了解如何获取它:
微软对 Windows 7 和 8.1 更新进行了全面改革——但不要称之为服务包。
答案3
这个问题多年来一直存在,也曾有过不同的修复方案,因此,以下是我截至 2016 年 1 月 5 日对此问题的最新指南
查看下面的编辑部分,自 2016 年 5 月起,有一种更快的方法可以在全新安装后完全更新 Windows 7 SP1。
当我重新安装带有 SP1 的 W7 或 Windows 更新卡在检查更新时遇到问题时,我会这样做。
如果尚未安装 Service Pack 1,请先安装,然后再遵循本指南。
下载 KB-3138612 并将其保存到以后可以找到的地方
下载 SUR 工具 保存到同一个地方
在 Windows 加载之前重新启动 PC 并断开与互联网的连接,这很重要,因为每次启动时 Windows 都会在后台检查更新,这将再次开始检查更新,并会阻止安装下载的软件包,直到完成检查,因此在 Windows 加载之前断开与互联网的连接可以防止这种情况发生。
启动后安装 KB-3138612,如果需要重新启动,请执行此操作并保持与互联网断开连接。
现在安装 SUR 工具包,这是一个大包,将安装许多更新以及清理和修复 Windows 更新商店。它还将减少以后需要安装的 Windows 更新数量。
安装 SUR 包后重新启动,连接到互联网并进行手动 Windows 更新,现在应该运行得更快了。即使在这些修复之后,我仍然看到一些 W7 PC 如果从控制面板手动启动,则需要长达一小时才能完成更新检查。
如果您有其他 Windows 更新问题,并且安装了上述 2 个更新,下载此 Microsoft Windows Update 修复工具(右键单击“另存链接为”)运行它并选择激进模式以完全重置 Windows 更新。重新启动并再次尝试从控制面板进行 Windows 更新。至少根据我的经验,当其他 Microsoft 修复工具失败时,此工具可以修复问题。
更新:微软发布了 Windows 7 SP1 的大型更新汇总,这类似于服务包,但他们不这么称呼它。这将使在全新安装后更新 Windows 7 的速度更快,不再有 Windows 更新问题和多次重新启动。此更新汇总将使系统更新至 2016 年 4 月星期二的补丁。
这不是通过 Windows 更新发布的,您必须使用 Internet Explorer 来获取它,打开 IE 并转到此地址
在搜索框中输入 3125574 并按回车键。
现在您将看到此汇总的所有版本,选择您需要的版本并将其下载到您以后可以找到的地方。
还可以使用 Windows 更新目录页面首先下载并安装此更新,3020369,它是汇总的先决条件,然后安装 3125574,同时请确保在应用这些更新时断开与互联网的连接。
答案4
如果过去使用 XP 更新的经验有任何迹象,它们偶尔放出一个指数时间算法。一旦您进行多次更新……就会花很长时间。目前,Windows 7 更新也处于类似情况;需要很长时间,尽管目前还没有官方解释最近这次速度变慢的原因。有趣的是,当新版本发布时,这种情况“就会发生”(旧版本)。愤世嫉俗的我不禁想象,有人可能故意希望这种情况发生,就像 [旧] Windows 很慢?您需要一个新版本。或者也许这只是 MS 开始假期的方式。
有一个针对某种 WU 缓慢问题的修补程序,该修补程序不会自动提供(即通过更新本身提供):https://support.microsoft.com/en-us/kb/3102810唉,对我来说,它并没有带来什么实际变化,而且我在两台不同的电脑上试过了,一台是 32 位的,一台是 64 位的。而且它从 10 月就出现了,所以它可能不是最新的问题。