som*_*ser 125 windows-7 windows-update
我有关闭自动更新的 Windows 7 电脑。我每个月左右批量更新一次。但每次“检查更新”需要 15 到 30 分钟。我不明白为什么检查更新会这么慢?我不得不想知道背景中发生了什么。是计算哈希吗?我的启用了自动更新的 PC 每次启动时都会遭受同样的命运吗(只是我不知道)?
mis*_*256 103
在检查更新部分是因为如此缓慢:
Windows 7 使用基于组件的服务,这意味着 Windows 更新必须非常努力地确定文件和组件依赖项/相互依赖项,维护旧文件/组件的并行版本,同时仍然可以卸载单个更新/components 但不破坏任何其他更新/组件,同时考虑到取代和上帝知道还有什么。完成所有这些工作的代码一定非常复杂。
Windows 7 64 位必须同时维护 32 位和 64 位版本的每个更新。
Windows 必须维护每个更新的GDR 和 LDR版本,这意味着在 64 位 Windows 7 上,每次更新都会获得 32 位 GDR、32 位 LDR、64 位 GDR、64 位 LDR。
Windows Update 背后的代码效率极低,可能是由于其概念上的复杂性。我在过去几年的观察是,随着发布更新总数的增加,更新检查时间几乎呈指数增长。对我来说,这表明正在使用某种递归算法,也许是为了确定超序或解决依赖关系。
对我们来说不幸的是,微软不喜欢谈论 Windows 内部,所以我们最终不得不自己弄清楚或推测。
har*_*ymc 61
现有答案中处理了该问题的几个方面。我将尝试通过以一般方式列出原因来将它们联系在一起,而不重复已经说过的内容:
让我们更详细地看一下这些要点。
Windows 更新的复杂性
更新发布后,随着时间的推移,它可以进入另外三个不同的阶段:修订、取代和过期。
更新修订:当对先前发布的更新进行更改时,它被称为更新修订,其中某些下载内容发生了更改。这是部分而非完整的更新替换。
取代的更新:这是一个或多个先前版本的完全替代。有时,Microsoft 会将多个版本打包到一个包中,然后该包将替换其封装的更新。
过期更新:这些是从有效更新列表中删除的更新。此类更新不再适用,并且不会被检测到进行安装。大多数情况下,更新在被替代更新替换后就会过期。
更新也有依赖机制,这意味着某些更新可能需要先应用其他更新。
过期更新对 WU 性能有问题,因为不幸的是它们没有从计算机中删除,所以它们仍然参与计算,而且数量很多。通过使用磁盘清理删除过时的 Windows 更新 (首先备份系统驱动器的磁盘映像,因为 WU 也非常脆弱),可以实现一些改进。
吴计算
由于可能的组合数量巨大,Microsoft 以巨大的树格式保存 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 将需要考虑的更新数量较少。
结论
由于 Microsoft 仍在继续对 Windows 7 应用大量更新,WU 只会随着时间的推移而不断放缓。
一种可能的优化是删除过时的 Windows 更新。另一种是使用“检查更新但让我选择”的WU选项,并在清晨或深夜检查更新。
大多数更新也适用于 Windows 8 和 10,因此微软 WU 服务器的负担只会在 Windows 10 很快发布时成倍增加。微软似乎还根据自己的政策分配其 WU 服务器的带宽,重点是为更新的操作系统提供服务,因此我们应该预计,一旦 Windows 10 发布,Windows 7 的速度会再次放缓,更新速度也会不成比例适用于 Windows 10。
如果 WU 太慢,唯一真正的解决方案是升级到更高版本的 Windows。
好消息:适用于 Windows 7(和 8.1)的 SP2 已经到来
Microsoft 已经发布了适用于 Windows 7 和 8.1 的 SP2。由于某些未知原因,此更新将无法从 Windows Update 获得,因此必须手动下载和安装。
在文章中阅读有关如何获取它的信息:
Microsoft 对 Windows 7 和 8.1 更新进行了彻底检查——但不要将其称为服务包。
Moa*_*oab 23
多年来,此问题一直在不断变化,并进行了不同的修复,因此这是我截至 2016 年 1 月 5 日的此问题的更新指南
检查下面的编辑部分,在 2016 年 5 月全新安装后,有一种更快的方法来完全更新 Windows 7 SP1。
当我重新安装带有 SP1 的 W7 或在检查更新时遇到 Windows 更新问题时,我会这样做。
如果未安装 Service Pack 1,请在遵循本指南之前安装它。
下载 KB-3138612 并将其保存在以后可以找到的地方
下载 SUR Tool 保存到同一个地方
在 Windows 加载之前重新启动 PC 并断开 Internet 连接,这很重要,因为在每个引导窗口都会在后台检查更新,这将再次开始检查更新挂起并阻止安装下载的软件包,直到它完成检查,因此在 Windows 加载之前断开与互联网的连接可以防止这种情况。
启动后安装 KB-3138612,如果需要重新启动,请执行此操作并保持与互联网的连接。
现在安装 SUR 工具包,这是一个很大的包,将安装许多更新以及清理和修复 Windows 更新存储。它还将减少以后需要安装多少 Windows 更新。
安装 SUR 包重启后,连接到互联网并执行手动 Windows 更新,它现在应该工作得更快了。即使在这些修复之后,我也看到一些 W7 PC 需要长达一个小时才能完成检查更新,如果从控制面板手动启动。
如果您有其他 Windows 更新问题并且安装了上述 2 个更新,请下载此 Microsoft Windows Update fixit 工具(右键单击“链接另存为”)运行它并选择积极模式以完全重置 Windows 更新。重新启动并再次从控制面板尝试 Windows 更新。当其他 Microsoft fixit 工具失败时,此工具可修复问题,至少以我的经验是这样。
更新:微软已经发布了一个巨大的 Windows 7 SP1 更新汇总,这类似于一个服务包,但他们并没有这么称呼它。这将使全新安装后更新 Windows 7 的速度更快,不再有 Windows 更新问题和多次重启。此更新汇总将使系统更新到 2016 年 4 月星期二的补丁。
这不是通过 Windows Update 发布的,您必须使用 Internet Explorer 来获取它,打开 IE 并转到此地址
在搜索框中输入 3125574 并按回车键。
现在您将看到此汇总的所有版本,选择您需要的版本并将其下载到以后可以找到的地方。
还可以使用 Windows Update Catalog 页面先下载并安装此更新 3020369,它是汇总的先决条件,然后安装 3125574,在应用这些更新时也请务必断开 Internet 连接。
当您在扫描期间使用ETW/WPR/WPA 检查 CPU 使用率时,您会看到 CPU 使用率来自wuaueng.dll!CUpdatesToPruneList::AddSupersedenceInfoIfNeeded
调用 from wuaueng.dll!CAgentUpdateManager::FindUpdates
. 该AddSupersedenceInfoIfNeeded方法是最慢的事情。如果仍然需要或取代提供/安装的 Windows 7 更新(过时/由较新的更新替换),这将按照名称指示并查看。这是非常缓慢的。
使用2016 年 6 月的最后一次 Windows 更新客户端更新,这是Windows 2016 年 7 月 7 日更新汇总的一部分,更新搜索速度再次加快。
我只需要 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"
Run Code Online (Sandbox Code Playgroud)
在 Windows 10 中,Microsoft 按照我的建议修复了该问题并使更新累积。在这里,您只需要 1 个大型更新即可达到当前补丁级别。不再需要这种缓慢的检查。
Ove*_*ind -2
不是散列,但是是的,它会检查很多(深至某些 DLL 文件版本)。不管你用什么系统,速度都很慢。
作为解决方案,请将其关闭,当有一天或晚上您不需要太多系统时,将其打开,强制它检查更新并让它们全部安装。
归档时间: |
|
查看次数: |
375396 次 |
最近记录: |