windows-7 - Svchost : How to make it run only one module per instance of svchost. exe?如何获取扩展的进程信息?

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

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

我为自己设定了非常简单明了的目标来实现这一目标:

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

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

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

如果对于如何调查、缩小此问题的根本原因有更好的选择,请告诉我。

最佳答案

我已经回答了我的问题,但我把它放在评论下。我现在添加相同的答案,以便众所周知。

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

选项 1 的解决方案:

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

选项 2 的解决方案:

sc config <service name> type= own

或者更改注册表HKLM\System\CurrentControlSet\Services\<ServiceName>\Type到 0x10。

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

关于windows-7 - Svchost : How to make it run only one module per instance of svchost. exe?如何获取扩展的进程信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5933348/

相关文章:

.net - VS2008 on Win7 64-Bit : Debugging a Windows Service

c# - 常规日期时间问题

c++ - 如何从用户应用程序向 SYSTEM 应用程序发送自定义消息?

java - 使用 Docker 和 Testcontainers 进行数据库集成测试

python - 安装 python 启动文件

c++ - Windows Vista/7 中的控制台/命令提示符全屏

linux - 使用 BASH 在不同的盒子上启动多个进程

.net - 用于执行外部应用程序的 Shell 与 Process.start

C# - 使用最小化的记事本打开文本文件?

c++ - 服务始终处于 STOPPED 状态