windows - 为什么我在 Windows 上看不到服务的内存/CPU 使用情况?

标签 windows service internals

<分区>

在 Windows 上,您可以看到在 powershell 中调出任务管理器或 Get-Process 以获取正在运行的进程列表及其内存和 CPU 使用情况。

您还可以(在 Windows 8 上或 powershell 中的 Get-Service)查看所有正在运行的服务。然而,对于服务,您不会获得任何这些数字。

从我的开发人员的角度来看,这似乎总是有点奇怪。当然,一项服务需要更多的部署工作,并且难以编码和调试,但除此之外,它只是一个与其他任何程序一样的程序。

我确信服务没有这些数字是有充分理由的,这可能与 Windows 运行服务的方式有关。这是什么原因?

最佳答案

有一个服务宿主进程“svchost.exe”可以启动/处理多个服务。由于资源消耗通常由操作系统在进程级别测量,因此由同一主机进程启动的服务将全部显示为该进程的使用情况。

如果您查看控制面板的“服务”区域并查找启动服务的程序,您会发现大多数 Windows 服务都使用具有不同参数的“svchost.exe”来启动它。

任务管理器显示多个 svchost.exe 实例,因此可以将特定服务隔离到一个 svchost.exe 实例,但您需要知道哪个实例仅服务于兴趣。您可以使用 PowerShell 通过 svchost.exe 启动服务,但卡在进程 ID 上,然后在任务管理器中添加进程 ID 列,这样您就可以看到内存/CPU 使用情况。

关于windows - 为什么我在 Windows 上看不到服务的内存/CPU 使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14878239/

相关文章:

python - 谷歌云 SDK Windows 安装程序错误 : "System cannot find the path specified"

windows - 可能使用提升的权限创建的日志文件

Android服务保持活跃

PHP 内部数组

windows - 如何在 Windows 上使用 CasperJS 设置 SlimerJS?

Android 在启动时启动服务,设备重启后如何重启服务类?

service - 事件 : failed (Result: service-start-limit-hit)

hadoop - Mapreduce数据流内部

perl - Perl 中的 `null vK` 是什么?

windows - 如何制作一个文本文件,其中包含给定扩展名的所有文件的路径?