修复高CPU使用率和内存泄漏问题Svchost.exe(wuauserv)

时间:2020-01-09 10:46:24  来源:igfitidea点击:

wauserv服务是一种标准的Windows更新服务,用于扫描计算机、搜索、下载和安装来自Windows更新或者本地WSUS服务器的新的安全补丁和更新。在某些情况下,Wauserv服务可能无法正常工作,导致CPU和RAM使用率过高。这是因为Wauserv正在容器进程内运行主进程,它会查找用户svchost进程在Windows设备上使用了过多的RAM和CPU资源。在本文中,我们将向我们展示如何通过windows7和windows10中的wauserv进程解决内存和CPU使用率高的问题。

Windows7中的Wauserv服务占用高达50%的CPU和内存

一些用户开始抱怨他们运行Windows7的计算机性能不佳。问题表现为:每天在同一时间(每个用户在自己的时间)计算机开始减速。任务管理器显示 主进程使用高达1.2-2 GB的内存和高达100%的单核CPU。因此,在30-60分钟内使用电脑是不可能的:它变得非常慢,并且经常挂起。

当从本地SCCM服务器(用于管理客户端上的Microsoft更新)接收更新时, Windows 7 SP1 x86和x64客户端出现问题。在客户机上运行 任务管理器,在 进程选项卡中根据内存或者CPU使用情况对正在运行的进程进行排序。你可以看到当前的进程 主进程正在使用11%的CPU和1.2GB内存。事实上svchost.exe是一个容器进程,其中运行其他程序和系统服务线程。使用任务管理器,我们将无法理解哪个线程(服务)会导致高系统负载。

有关进程及其线程的更详细信息可以使用process Explorer实用程序获得。

运行 procexp.exe程序找出问题的进程 svchost.exe占用太多内存和/或者CPU。

打开其属性并转到 线程选项卡。在这里我们可以清楚地看到, wauserv(Windows Update)线程在svchost.exe进程(wauserv服务扫描系统和更新服务器以获取更新)。由于一些代码问题,wauserv开始泄漏并消耗所有可用内存,高达1.5-2gb(进程可用的最大大小),并开始主动使用分页文件。系统变慢了。

有趣的是,这个问题更经常出现在拥有 2GB内存的客户机上。如果一台电脑有4GB或者更高的内存,这个问题对用户来说并不明显,因为Wauserv中的内存泄漏不会超过2GB。

如果你停止使用服务.msc控制台,你的窗口中的高内存和CPU负载将大大降低。以及svchost.exe开始只使用180-200 MB内存。

重要。这并不意味着我们必须停止wauserv并使其处于禁用状态,因为系统将停止接收安全更新并冒着黑客攻击的风险。

首先,我们尝试按照“如何重置Windows更新代理配置”一文中的说明重置Windows更新代理的设置。这个问题解决了,好几天没有出现过,但后来又出现了。本地缓存和更新数据库的大小似乎达到了某种限制,wauserv再次开始使用内存高(leak)。

我们尝试了很多其他方法,但只有安装了以下Windows Update agent修补程序才真正起到了帮助:

  • https://support.microsoft.com/en-us/kb/3050265(2014年6月起更新Windows update agent);

  • https://support.microsoft.com/en-us/kb/3065987(2014年7月起更新Windows更新代理);

  • https://support.microsoft.com/en-us/kb/3102810(Windows 7/2008 R2的修补程序,允许解决使用WSUS安装更新期间CPU和内存负载高的问题,从2014年11月开始)。

提示。我们并不是在所有安装了Windows7的计算机上安装了补丁,而是只在那些用户报告了类似问题的计算机上安装了补丁。

安装更新后,wauserv进程的内存使用量减少到200 MB,更新扫描过程所需的时间也少得多。

wauserv:windows10的高CPU和内存使用率

当windowsupdate服务将处理器加载到很高并且占用了太多内存时,这个问题在不同的windows10版本中也会出现。

打开 任务管理器找到流程 **主进程)会消耗太多内存或者CPU资源。右键点击并选择“ 转到服务

验证wauserv服务是否作为此服务的一部分运行svchost.exe进程(Windows Update服务)。确保wauserv(Windows更新服务)作为svchost.exe过程。

由于任务管理器不允许我们确定在svchost进程中运行的系统服务会导致高计算机负载,因此我们需要使用processexplorer(如上所述)。确保高CPU和/或者内存负载是由Wauserv服务引起的(在我们的示例中是C:\WINDOWS\system32\wuaueng.dll图书馆)。

与上述windows7中更新服务内存泄漏的情况不同,windows10没有通用补丁来解决这个问题。下面我们列出了通过Windows更新服务减少内存和CPU使用的基本步骤。

等待Windows更新安装

如果Windows Update服务当前正在扫描计算机或者安装更新,那么计算机的高负载应该不会让我们感到意外。尝试等待(1-2小时,具体取决于计算机的性能),然后等待Wauserv完成下载和安装更新。

运行Windows更新疑难解答

尝试使用集成的 窗口更新疑难解答诊断Windows Update Service 10. 前往 设置-> 更新与安全-> 疑难解答。选择 Windows更新(解决阻止我们更新Windows的问题)-> 运行疑难解答

实用程序将检查服务的状态并尝试修复发现的问题。