问题描述
ECS Windows系统内名为【svchost.exe】的进程,CPU或内存资源使用率一直居高不下,导致系统卡顿,影响正常使用。
问题定位方法
可以尝试通过如下方法定位出占用过高系统资源的具体程序或服务。
方法1. 使用任务管理器做简要分析
打开系统自带的【任务管理器】,快速判断出相应svchost进程下挂载的对应服务:
a) 通过右键单击任务栏,然后单击“启动任务管理器”,打开“任务管理器”。
b) 切换到“进程”选项卡。
c) 单击“显示所有用户的进程”,若系统提示您输入管理员密码或进行确认,请键入该密码或提供确认。
d) 右键单击资源使用过高的 svchost.exe实例,然后单击“转到服务”按钮,与进程关联的服务将在“服务”选项卡上突出显示。
方法2 使用SC Config命令隔离服务
此外,在找到CPU占用高的Svchost之后,也可以尝试通过SC Config命令将svchost中驻存的服务“独立”出来到单独的svchost中运行,请参考微软官方博客文章。
Getting Started with SVCHOST.EXE Troubleshooting
How to troubleshoot Service Host (svchost.exe) related problems?
例如,客户遇到高CPU的情况,定位下来发现是svchost占用CPU较高。通过tasklist命令发现对应的svchost进程中有多个服务驻存。
tasklist /svc
通过Sc config 命令我们可以将这些服务独立出来运行到单独的svchost进程中
sc config wuauserver type= own
执行成功后重启机器, 发现Windows Update服务已经成功独立
随后,经过监控发现确实是Windows Update的服务消耗CPU较高,后续响应的调整Windows Update策略晚上进行更新,避免工作时间影响服务器业务的运行。
如果恢复该服务与其它服务一起驻存到相同svchost中,请执行如下命令后重启生效。
sc config wuauserv type= share
方法3. 使用procexp做深入分析
通过任务管理器只能定位出相应svchost进程下挂载的服务,但无法查看具体是哪个服务占用了过高的系统资源。
使用微软官方Sysinternals Suite安全组件包中的procexp工具,可以做进一步的排查分析,定位出具体占用过高系统资源的服务、进程和关联文件等。
a) 到官方
下载procexp 。
b) 打开procexp,如下图所示,将鼠标指向占用资源异常的svchost进程,气泡提示框就会相应显示出该svchost进程下挂载的相应服务。
c) 双击相应的svchost,弹出的进程属性对话框。
d) 切换到“Services“选项卡,也同样能查看到相应svchost进程下挂载的相关服务。并能对相应服务进行权限设置、停止、重启、暂停等快捷操作。
e) 切换到“Threads“选项卡,能看到相应svchost进程下占用最高资源的线程的CPU使用率和归属的服务。
f) 确定了相应服务或者线程归属动态链接库文件后,用户再做相应的处理即可。
阅读须知
本文仅供用户使用 ECS Windows 时参考,文中引用的微软官方链接,版权归属微软。请注意文章适用的操作系统范围,以及微软 Windows 产品迭代或者文档未及时更新可能带来的问题,阿里云官方不对引用的微软官方链接内容负责。
如果您对文档内容有疑问或认为文档内容有误,请及时通过文档下方的评价板块反馈给我们,我们将酌情改进修正。
如问题还未解决,请联系
售后技术支持。