svchost.exe 占用 25% CPU

svchost.exe 占用 25% CPU

一段时间以来,我注意到我的 svchost.exe 之一在我的 4 核 Win7 Ultimate PC 上持续占用 25% 的 CPU 时间。此特定服务主机托管:

  1. 加密服务 (CryptSvc)
  2. Dns 客户端 (DnsCache)
  3. 网络位置感知 (NlaSvc)
  4. 工作站(Lanman工作站)

我怀疑有病毒,但 Windows Essential 已更新且没有报告任何异常,而且 Autoruns 也没有显示任何异常。

谢谢您的帮助!

根据请求,线程堆栈占用了 25% 的 CPU:

ntkrnlpa.exe!KeSetEvent+0x2a1
ntkrnlpa.exe!KeDelayExecutionThread+0x5cc
ntkrnlpa.exe!KeWaitForMutexObject+0x393
ntkrnlpa.exe!KeQueryHighestNodeNumber+0x9fe
halmacpi.dll!KfRaiseIrql+0xcb
halmacpi.dll!KeRaiseIrqlToSynchLevel+0x8f
halmacpi.dll!HalEndSystemInterrupt+0x67
halmacpi.dll!HalInitializeProcessor+0xae8
ncsi.dll!NcsiIdentifyUserSpecificProxies+0x3a47
ncsi.dll+0x31f0
ncsi.dll!NcsiIdentifyUserSpecificProxies+0x4c92
ncsi.dll+0x1e93
ncsi.dll+0x20a2
ncsi.dll+0x1808
ncsi.dll+0x2240
ntdll.dll!RtlIsCriticalSectionLockedByThread+0x474
kernel32.dll!BaseThreadInitThunk+0x12
ntdll.dll!RtlInitializeExceptionChain+0x63
ntdll.dll!RtlInitializeExceptionChain+0x36

看起来是 HAL 中某种中断的问题?我会尝试更新所有驱动程序并报告。

答案1

每当有人遇到这种情况时,第一步就是逐个停止每个托管服务,每次停止之间等待片刻,然后检查使用率是否下降。一旦您将问题缩小到特定服务,您就可以进行网络搜索,看看其他人是否遇到过同样的问题。

在这种情况下,它很可能确实是 DNS 服务(Mikle没有表明为什么他认为不是,而且他对 HAL 的假设也是似是而非的)。

在所指出的服务中,唯一已知会导致 100% CPU 负载的服务是 DNS 服务。(关于其他服务,唯一提到高 CPU 负载的服务是 Vista+,它们与 DNSsvchost服务共享同一个实例。遗憾的是,它经常无法诊断出来。[1][2]) 它只占用 25% 的 CPU 负载是有道理的,因为他说这是一个四核处理器,所以 DNS 服务使用了它所用核心的 100%。

HOSTS只要文件变得“太大”,就会出现问题;出于某种原因,只要HOSTS文件包含太多条目,DNS 服务就会陷入混乱,开始占用 CPU,并且永远无法恢复(不,让它花很长时间才能最终完成是行不通的,因为它永远也完成不了,即使过了几天)。

在这种情况下,可能发生的情况是,Mikle 下载并安装了一个大HOSTS文件,类似于一些微创手术或者使用过 SpyBot 的免疫 功能

不幸的是,在这种情况下唯一的选择是将文件精简HOSTS为仅几个条目,或者禁用 DNS 服务。

请注意,一旦 DNS 服务失控,您可能无法像普通服务那样简单地停止它;您必须实际终止svchost.exe托管它的实例。这在 XP 中并不那么糟糕,因为它通常有自己的副本,但在 7 中,它与其他几个服务共享一个副本(虽然没有什么严重的问题,所以您可以在禁用 DNS 服务后重新启动其他服务)。

答案2

以管理员身份启动 Process Explorer(也可以从 Microsoft Sysinternals 启动)。

查看消耗过多的 svchost.exe 的“线程”选项卡,
您可以获取非常繁忙的线程的堆栈以查看其正在做什么,或者将堆栈复制到此处。

答案3

这是 DNS 客户端在执行的操作。停止该服务,它就会退出。(无论如何,该服务不是必需的。它声称可以加快 DNS 查找速度,但自从我将其设置为手动后,我没有注意到有什么区别。)

答案4

我也遇到过这种情况;但这可能就是你遇到的情况,也可能不是。因为你大约 5 年前就问过这个问题,所以这更有可能帮助其他人而不是提问者。我也有一个很大的 HOSTS 文件,这确实会导致 DNS 服务在启动后非常繁忙;但这种现象会在互联网正常响应后消失。我的 Core I3-2100 有超过 171,000 个条目,2-3 分钟后就可以使用了。如果在那之后这种情况仍然存在,那么可能不是那样的。

我按照那个提供 Process Explorer 的人的回答做了,找到了罪魁祸首。就我而言,我有一块华硕主板,所以我放心地安装了华硕 AI Suite II。它安装了一个名为“AsRoutineController.exe”的文件,Process Explorer 指示该文件使用了 24-25% 的 CPU,也就是说,几乎占用了单个核心的全部 CPU。这似乎与启动 AI Suite 小程序的栏有关。从系统托盘停止 AI Suite II 会导致它停止。重新启动 AI Suite II 应用程序不会导致问题恢复。不幸的是,我过去在全新启动时看到过这种情况,即使在网络开始正常响应之后也是如此。因此,似乎防止它消耗 25% 的处理能力的唯一方法就是卸载 AI Suite II(如果这是导致您出现问题的原因)。

相关内容