我观察到 Windows 更新 (Win7 SP1) 出现了奇怪的行为。进程 svchost 占用了我虚拟机 (VirtualBox) 的整个核心,却什么也没做(即没有网络流量,文件夹C:\Windows\SoftwareDistribution
大小保持不变,文件数量也保持不变)。此外,该进程有时会消耗大量内存 (> 1 GB)。我还注意到,有时文件夹的大小SoftwareDistribution
会在一段时间内增加,之后什么也没发生,svchost 继续占用整个核心。
我知道问题出在 Windows 更新上,因为我已经跟踪(使用资源监视器)哪些服务与上述行为有关。
下图显示了我所面临的情况:
下图显示了有关 svchost 的详细信息:
如果我尝试执行更新,什么也不会发生。Windows 更新没有进展。参见下图:
我让这台机器尝试更新 4 个小时。在此期间,CPU 消耗仍然很高(如上所述),并且没有安装任何更新。
我的问题如下:
为什么 Windows 更新无法工作,而且仍然占用了我处理器的整个核心却无所事事?
相关问题:
答案1
使固定
微软发布了Windows Update 客户端更新这是2016 年 7 月更新汇总修复长Windows 更新扫描时挂起。
此更新包含对 Windows 7 Service Pack 1 (SP1) 中的 Windows 更新客户端的一些改进。其中包括以下内容:
- 一项优化,解决了某些计算机上报告的更新扫描时间过长的问题。
下载:
停止 Windows 更新服务。这加快 MSU 更新的设置. 这是可以做到的从命令行, 或者从服务管理器窗口。
尝试下载的更新,看看它是否能加快更新的安装速度。
为了能够安装更新,您首先需要安装2015 年 4 月 Windows 7 和 Windows Server 2008 R2 服务堆栈更新更新(再次尝试安装 MSU 之前停止 WU 服务)。
下载(2015 年 4 月服务堆栈更新):
解决方法 1
如果这仍然无法帮助搜索新的更新,请使用WSUS 脱机获取所有更新。
答案2
尝试解决这个问题一天之后,我创建了其他虚拟机来检查该问题是否会再次发生。
不幸的是,问题再次发生!之后我和一位朋友讨论了这个问题,他建议我禁用 Windows 网络接口的 IPv6。我照做了,观察到两种行为:
在新的虚拟机上,当我禁用 IPv6 时,CPU 的消耗几乎立即下降,并且 Windows 更新按预期工作。
在另一台虚拟机上,禁用 IPv6 后 CPU 消耗没有下降。观察到这一点后,我重新启动了 Windows,但 CPU 消耗仍然很高。然而,大约 30 分钟后,CPU 消耗下降,一切正常。
禁用 IPv6 后,两个 Windows 均成功更新。
值得注意的是,我可以重现此行为。在禁用 IPv6 之前,我有虚拟机的副本。
答案3
另一个可能有帮助的是Windows 更新疑难解答- 它是一个独立的应用程序,可以诊断 Windows 更新和后台智能传输服务 (BITS) 的问题。
答案4
为我解决这个问题的是KB2889748
在基于 Windows 的计算机上安装 Windows Management Framework 3.0 后,Svchost.exe 进程的内存使用率过高