# Windows云服务器CPU使用率高怎么办？
#### 问题描述
使用Windows操作系统的弹性云服务器时，出现下列现象：
- 系统运行卡顿、服务响应时长较长、应用性能下降等。
- 通过云监控查看云服务器的CPU使用率监控指标，发现当前CPU使用率大于80%（参考值），可认为CPU使用率过高，当前负载值大于0.5（参考值），可认为负载值过高。

- 收到CPU使用率或者负载超过设定阈值的告警信息。
 
#### 可能原因
CPU使用率较高可能有以下原因：
- 云服务器遭到病毒木马入侵。
- 云服务器中第三方杀毒软件运行占用较高CPU资源。
- 云服务器中存在应用程序异常、驱动异常、高I/O使用率或高中断处理的应用程序。
 
#### 处理方法
1. 登录弹性云服务器，具体操作，请参见[Windows ECS登录方法概述](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0092494943.html)。
2. 在桌面底部单击"![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002188838650.png)"按钮，或打开Win后单击搜索框，输入"资源监视器"进行搜索。
3. 在"资源监视器"窗口，单击"CPU"页签，查看各进程是否有CPU使用率过高的现象。
   可以通过句柄和模块搜索对应的进程。
   图1资源监视器   
   ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002371735209.png "点击放大") 
4. 针对占用CPU资源较高的进程，查看对应的进程ID和进程的程序名。
5. 打开"任务管理器"，单击左侧导航的"详细信息"，找到步骤[4]中的异常进程名和对应的PID。
6. 右键单击异常进程的名称，选择**"打开文件所在的位置(O)"** ，查看进程是否为恶意程序。
   图2任务管理器   
   ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002337897012.png "点击放大") 
7. 观察CPU使用率情况，根据具体场景进行处理。
   - **场景一** ：正常用户程序/进程长时间占用大量CPU资源。
     可以根据实际情况[变更单台ECS规格](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0013771092.html)到更大的规格或优化业务程序。
     
   
   - **场景二** ：异常用户程序/进程长时间占用大量CPU资源。
     1. 通过资源监视器或任务管理器右键该进程选择结束进程。
        ![](https://support.huaweicloud.com/ecs_faq/public_sys-resources/caution_3.0-zh-cn.png)
        结束进程前请确保您了解该进程的相关信息，避免误操作导致业务中断。
        
     
     2. 如果怀疑该进程属于恶意程序，可以进行查杀，可参考[病毒查杀](https://support.huaweicloud.com/usermanual-hss2.0/hss_01_0582.html)。
      
   
   - **场景三** ：没有单个程序/进程占用大量CPU资源，但整体CPU使用率较高，负载较低。
     可能是因为当前实例的服务正常运行所需的CPU资源性能大于实例本身的CPU性能，存在CPU性能瓶颈。
     您可以选择升级实例规格，可参考[变更单台ECS规格](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0013771092.html)。
     
   
   - **场景四** ：单个业务程序/进程偶发CPU使用率及负载较高，但持续时间较短且频率较低。
     需要优化业务程序，解决特殊业务场景（如加解密、高并发等）触发的CPU资源占用过高的问题。
     
    
 
#### 查看CPU的常见工具
- **任务管理器**
  - 任务管理器的"进程"页签中，可以直观查看应用程序列表，定位CPU占用较高的应用程序。
    图3任务管理器"进程"页签   
    ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002337737256.png "点击放大") 
  
  - 任务管理器的"性能"页签中，右键单击CPU使用率图示，单击"图形更改为(H) \> 逻辑处理器(L)"。
    图4任务管理器"性能"页签   
    ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002371775321.png "点击放大") 
  
  
  
  - 当单个进程的CPU使用率飙升至100%，而其他进程的CPU使用率变化不大时，可能是由于网络I/O处理造成的。
   
- **资源监视器**
  资源监视器可以直观查看CPU使用率，还可以通过句柄和模块搜索对应的进程。
  图5资源监视器   
  ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002371735217.png "点击放大") 
- **Process Explorer**
  Process Explorer是一款Microsoft Sysinternals工具，通过配置正确的Symbols，检查对应应用程序的线程调用的Call Stack，用以定位可能的问题驱动。
  下载链接，请参考[Precess Explorer](https://learn.microsoft.com/zh-cn/sysinternals/downloads/process-explorer)。
  图6Process Explorer   
  ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002337897020.png "点击放大") 
- **性能监视器**
  性能监视器（Performance Monitor）是Microsoft专业收集各个组件性能计数器的工具。对于系统CPU资源消耗，有多个Counter来检查。
  在WIndows的搜索框中输入"性能监视器"即可打开，在曲线图区域右键单击"添加计数器(D)"，可以根据需要增加。
  图7性能监视器   
  ![](https://support.huaweicloud.com/ecs_faq/zh-cn_image_0000002337737268.png "点击放大")
  Performance有如下三个核心参数。
  - \\Processor(_Total)\\% Processor Time：CPU执行非空闲线程的时间百分比。 \\Processor(_Total)\\% Processor Time=\\Processor(\*)\\% User Time+\\Processor(\*)\\% Privileged Time.
    
  
  - \\Processor(\*)\\% User Time：表示处理器用于执行程序代码的时间消耗，可以确定哪个应用程序或函数调用消耗了较多的时间。
  
  - \\Processor(\*)\\% Privileged Time：应用程序在内核中执行系统调用（例如驱动、IRP，上下文切换等）操作的时间。 如果操作系统花费多于30%的时间在Privileged Time，则说明实例正在进行高I/O吞吐相关的操作。
    当% Privileged Time很高时，需要进一步检查% DPC Time、% Interrupt Time以及Context Switches/sec的情况。
    1. 高% DPC Time、% Interrupt Time表示未知设备出现大量的操作或者很差的性能问题。
    
    2. Context Switch值很高时，说明内核在CPU上对进程或线程进行切换。 Context Switches/sec值很高表示有大量的线程处于Ready状态，需要减少线程的数量解决问题。
       
     
   
 
