windows服务器下如何处理CPU占用高的问题?

赞赏 2016-07-18

使用Windows服务器时会遇到CPU高利用率的情况

在某些情况下这是正常的行为,低规格服务器却安装了Windows 2012 服务器,有时会发现服务器的CPU突然飙高,定位下来发现是Windows Update服务在进行自动更新。

但是在某些情况下,由于病毒木马,三方杀毒/网络防护软件,应用程序/驱动异常,运行高IO或者高中断处理的应用程序等情况下也会造成CPU占用率高。

本文根据日常处理中遇到的高CPU问题以及微软官方文档,总结下如何处理CPU高的问题。


如果希望快速解决问题,请尝试如下方法:

  • 如果有安装杀毒软件,请检查CPU飙高时,杀毒软件是否在后台执行扫描操作。如果可能,请升级杀毒软件到最新版本,或者删除杀毒软件;
  • 使用MSconfig禁用所有非微软自带服务驱动,检查问题是否再次发生,具体参考微软KB How to perform a clean boot in Windows;
  • 请使用商业版杀毒软件,或者使用微软免费安全工具Microsoft Safety Scanner在安全模式下扫描杀毒,链接如下
    https://www.microsoft.com/security/scanner/zh-cn/default.aspx
  • 检查CPU飙高时,是否后台有执行Windows Update的行为;
  • 运行Windows Update来安装最新的微软安全补丁;
  • 如果该ECS内应用程序有大量的磁盘访问/网络访问行为/高计算需求,高CPU很可能是正常结果,您可以尝试增配实例规格的方式,使用更多核数/内存的规格来解决资源瓶颈问题。

注:请参考微软官方博文
How to troubleshoot high cpu in the System process


排查指南


如果需要定位为何出现CPU高的原因,可以参考微软官方博客说明,微软有多个工具可以定位CPU高的问题。

例如 任务管理器,资源监视器(Resource Monitor), 性能监视器(Performance Monitor), Process Explorer,Xperf (Windows server 2008以后),  KernRate(Windows server 2003),抓取系统Full Memory Dump检查。


任务管理器

可以直观检查应用程序列表获取哪个应用程序占用CPU较高。点击CPU列可以按照CPU使用率排序。


在任务管理器的”性能”页中检查CPU占用率,注意在右侧CPU使用率图示,

请右键选择”将图形更改为”->”逻辑处理器”。如下图显示了4个逻辑CPU的利用率。



技巧:如果仅仅看到某个CPU飙升到接近100%, 但是其它CPU变化不大,很可能是网络IO的处理造成。


资源监视器

直接检查CPU的使用率,还可以通过句柄和模块搜索对应的进程。



Process Explorer

微软官方sysinternals工具,下载链接如下:

https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx

该工具非常强大,在检查高CPU问题方面,通过配置正确的Symbols,可以通过检查对应应用程序的线程调用的Call Stack,来定位可能的问题驱动。

关于使用实例,请参考微软专家Mark Russinovich 的博文  The Case of the System Process CPU Spikes


性能监视器/Xperf

性能监视器(Performance Monitor)是微软专业收集各个组件性能计数器的工具。

对于系统CPU资源消耗,有多个Counter来检查。通过开始->运行->perfmon打开该工具。

微软博文User Mode Versus Privileged Mode Processor Usage 描述了Performance的3个核心Counter

  • “\Processor(_Total)\% Processor Time”

  • “\Processor()\% User Time” 

  • “\Processor()\% Privileged Time”

“\Processor(_Total)\% Processor Time” 是“\Processor()\% User Time” 与“\Processor()\% Privileged Time”使用之和。

\Processor()\% Privileged Time 高的处理

\Processor()\% Privileged Time 是应用程序在内核中执行系统调用(例如驱动、IRP,上下文切换等)操作的时间。如果操作系统花费多余30%的时间在Privileged Time ,那么意味着其可能在进行高IO吞吐相关的操作。下图是Privileged Time高的示例:


此时,请进一步检查 % DPC Time、% Interrupt Time、Context Switches/sec的情况。


如果% DPC Time、% Interrupt Time值较高,

请参考文档

Choose Your Own Adventure: High Deferred Procedure Calls (DPCs) or High Interrupts

高DPC以及高中断,意味着某些设备出现大量的操作或者很差的性能问题,此时,建议使用微软Xperf工具进一步分析,关于XPerf的使用,请参考文档:

Windows IT Pro Magazine: Examining xPerf 

http://www.windowsitpro.com/print/performance/examining-xperf.aspx

如果Context Switch值比较高,请参考The Case of the 2 Million Context Switches . 高上线文切换行为可能是由于有大量的线程处于Ready状态,通过减少线程的数量解决此类的问题。如下是Mark Russinovich给出的一篇解决高CPU的实例文章。

Mark Russinovich’s The Case of the System Process CPU Spikes


\Processor()\% User Time高的处理


\Processor(
)\% User Time是处理器用于执行程序代码的时间消耗,可以用来哪个应用程序/函数调用消耗了最多的时间。下图给出了User Time高的示例:


具体可以参考微软文章:

How To: Identify Functions causing a High User-mode CPU Bottleneck for Server Applications in a Production Environment

登陆后阅读全文
阅读 2468 赞赏 0 有用 2 没用 0 收藏 0 分享

   



0 条留言

Clinton的头像

Clinton

the best of the best

相关文章

云服务器 ECS Linux 如何查看物理 CPU、内存信息?

Linux下CPU占用率较高如何排查?|kswapd0 进程占用 CPU 较高

Linux下用superpi 测试 CPU 性能

windows Server 安装IIS和FTP操作步骤

windows系统svchost.exe进程占用资源(CPU,内存)较高 如何处理?

windows系统任务管理器数据滞后或暂停的原因

推荐 | 装逼神器gtop (图形化实时监控服务器进程、CPU、内存)

腾讯优图首度开源深度学习框架ncnn 主打手机端,同类cpu框架最快

阿里云如何连接 Windows 实例

windows服务器异常重启以及蓝屏如何处理?

有料推荐

这世界欠我一个这样的老公!

高校学生模仿“世界名画”摆拍,可以说是戏精本精了

iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评

果然是高手!这次在日本,特朗普竹杠敲得不是一般狠

资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样

长一样的双胞胎也能识别?蚂蚁金服发布「眼纹识别」技术

苏联是怎么被阿富汗拖垮的?

美团或入局「分时租赁」共享汽车,王兴要大笔投入「泛出行」领域了? | 36氪独家

你或许被“一盘番茄炒蛋”刷屏了,但有人辛酸,有人质疑

iPhone X发售前夜,黄牛与苹果公司的不安

他的文章

如何查询服务器远程登陆日志?

RDP-Tcp 中最大连接数显示为灰色,不能更改?

Winodws远程连接服务器如何映射本地电脑磁盘

Windows服务器提示 您的帐户已被停用

Windows远程端口无法监听公网地址?

Windows 2012设置允许单个用户连接多个会话的方法

Windows Server 2003 远程桌面 无法修改壁纸

Windows 2008远程连接提示“本地会话管理器 服务未能登录”

Windows系统服务器远程桌面连接通过 CapsLock 键关闭大小写的方法

如何远程连接Windows 服务器?

手机扫一扫
分享文章