【问题标题】:Svchost: How to make it run only one module per instance of svchost.exe? How to get extended process info?Svchost:如何使其每个 svchost.exe 实例仅运行一个模块?如何获取扩展进程信息?
【发布时间】:2011-08-21 11:01:23
【问题描述】:

我的一个应用程序有问题。我运行应用程序,一切正常。当我关闭这个应用程序时,我注意到系统中的一个“svchost”进程占用了大约 95-100% 的 CPU,我必须弄清楚是什么占用了这么多 CPU 周期。

我为自己设定了非常简单明了的目标:

  1. 获取进程信息或这个占用大量 CPU 的特定“svchost”
  2. 我知道 svchost 进程是用来做什么的,所以我省了你们向我解释它的时间。所以现在我必须知道这个流氓 svchost 加载了哪些模块。
  3. 我运行了我的应用程序,将其关闭并确保我的进程已完全关闭,不再存在于内存中。然后我得到了占用 100% CPU 的 svchost 的 PID
  4. 我运行了 ProcessExplorer(来自 sysinternals),获得了有关此 svchost 托管了多少服务以及哪些服务的信息。他们大约有 12 项服务。我不会理会这个列表,因为我更关心如何识别这 12 项服务中的哪一项正在占用 CPU 周期。
  5. 现在我有了清单,这里开始棘手的部分...我想做以下 2 个选项中的 1 个

选项 1: 我如何确定这 12 项服务中的哪一项占用了如此多的 CPU?我是否可以获取此 svchost 进程的扩展信息,以在此进程中托管的“每个服务”基础上为我提供详细信息,而不是基于我现在拥有的进程基础上?

选项 2: 是否可以配置 windows 使 svchost 每个 svchost 实例只运行一项服务?

如果有更好的调查方法,缩小此问题的根本原因,请告诉我。

【问题讨论】:

  • 我想出了如何在上面的问题中执行这两个选项:选项 1 的解决方案: 打开性能监视器 (perfmon.exe),转到 CPU 选项卡,检查 Image 选项卡下的 svchost.exe(带有要监视的 PID),转到“服务”框并检查不同的 CPU 使用情况服务。 选项 2 的解决方案: 转到注册表项:HKLM\System\CurrentControlSet\Services|(DLL) 将类型更改为 0x10。更多信息请参考blogs.technet.com/b/askperf/archive/2008/01/11/…

标签: windows-7 process windows-services process-explorer


【解决方案1】:

我已经回答了我的问题,但我把它放在 cmets 下。我现在添加与答案相同的内容。

我想出了如何在上面的问题中执行这两个选项:

选项 1 的解决方案:

打开资源监视器 (resmon.exe),进入 CPU 选项卡,检查图像选项卡下的 svchost.exe(带有要监视的 PID),进入“服务”框并检查不同服务的 CPU 使用率。

选项 2 的解决方案:

sc config <service name> type= own

或将注册表 HKLM\System\CurrentControlSet\Services\&lt;ServiceName&gt;\Type 更改为 0x10。

请参阅http://blogs.technet.com/b/askperf/archive/2008/01/11/getting-started-with-svchost-exe-troubleshooting.aspx 了解更多信息。

【讨论】:

  • 非常有帮助,谢谢。根据 TechNet 博客文章,要将其更改回共享进程,请运行 sc config &lt;service name&gt; type= share
  • @MarkBerry:如果有帮助我很高兴:)
  • 选项 1 Open Performance Monitor (perfmon.exe), go to CPU tab 的解决方案中似乎存在拼写错误。我相信您实际上的意思是-Open Resource Monitor (resmon.exe)。 Windows 7 的性能监视器中没有 CPU 选项卡。
  • 或者您可以在运行提示符下键入perfmon /res 以打开资源监视器。
【解决方案2】:
  1. 启动资源监视器

    • 在开始菜单中输入资源监视器 或
    • 单击任务管理器中性能选项卡下的资源监视器按钮
  2. 单击资源监视器顶部的 CPU 选项卡

  3. 勾选您要调查的进程(我按平均 CPU 排序)

  4. 服务将按您标记的进程进行过滤,并显示该进程中运行的每个服务的 CPU 统计信息。

【讨论】:

  • 在非英语 Windows 上:W+r perfmon /res
猜你喜欢
  • 2012-02-12
  • 1970-01-01
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 2014-10-27
相关资源
最近更新 更多