文档首页/ 弹性云服务器 ECS/ 常见问题/ ECS卡顿(Windows)/ Windows云服务器CPU使用率高怎么办?
更新时间:2025-08-29 GMT+08:00
分享

Windows云服务器CPU使用率高怎么办?

问题描述

使用Windows操作系统的弹性云服务器时,出现下列现象:

  • 系统运行卡顿、服务响应时长较长、应用性能下降等。
  • 通过云监控查看云服务器的CPU使用率监控指标,发现当前CPU使用率大于80%(参考值),可认为CPU使用率过高,当前负载值大于0.5(参考值),可认为负载值过高。
  • 收到CPU使用率或者负载超过设定阈值的告警信息。

可能原因

CPU使用率较高可能有以下原因:

  • 云服务器遭到病毒木马入侵。
  • 云服务器中第三方杀毒软件运行占用较高CPU资源。
  • 云服务器中存在应用程序异常、驱动异常、高I/O使用率或高中断处理的应用程序。

处理方法

  1. 登录弹性云服务器,具体操作,请参见Windows ECS登录方法概述
  2. 在桌面底部单击“”按钮,或打开Win后单击搜索框,输入“资源监视器”进行搜索。
  3. 在“资源监视器”窗口,单击“CPU”页签,查看各进程是否有CPU使用率过高的现象。
    可以通过句柄和模块搜索对应的进程。
    图1 资源监视器
  4. 针对占用CPU资源较高的进程,查看对应的进程ID和进程的程序名。
  5. 打开“任务管理器”,单击左侧导航的“详细信息”,找到步骤4中的异常进程名和对应的PID。
  6. 右键单击异常进程的名称,选择“打开文件所在的位置(O)”,查看进程是否为恶意程序。
    图2 任务管理器
  7. 观察CPU使用率情况,根据具体场景进行处理。
    • 场景一:正常用户程序/进程长时间占用大量CPU资源。

      可以根据实际情况变更单台ECS规格到更大的规格或优化业务程序。

    • 场景二:异常用户程序/进程长时间占用大量CPU资源。
      1. 通过资源监视器或任务管理器右键该进程选择结束进程。

        结束进程前请确保您了解该进程的相关信息,避免误操作导致业务中断。

      2. 如果怀疑该进程属于恶意程序,可以进行查杀,可参考病毒查杀
    • 场景三:没有单个程序/进程占用大量CPU资源,但整体CPU使用率较高,负载较低。

      可能是因为当前实例的服务正常运行所需的CPU资源性能大于实例本身的CPU性能,存在CPU性能瓶颈。

      您可以选择升级实例规格,可参考变更单台ECS规格

    • 场景四:单个业务程序/进程偶发CPU使用率及负载较高,但持续时间较短且频率较低。

      需要优化业务程序,解决特殊业务场景(如加解密、高并发等)触发的CPU资源占用过高的问题。

查看CPU的常见工具

  • 任务管理器
    • 任务管理器的“进程”页签中,可以直观查看应用程序列表,定位CPU占用较高的应用程序。
      图3 任务管理器“进程”页签
    • 任务管理器的“性能”页签中,右键单击CPU使用率图示,单击“图形更改为(H) > 逻辑处理器(L)”。
      图4 任务管理器“性能”页签
    • 当单个进程的CPU使用率飙升至100%,而其他进程的CPU使用率变化不大时,可能是由于网络I/O处理造成的。
  • 资源监视器
    资源监视器可以直观查看CPU使用率,还可以通过句柄和模块搜索对应的进程。
    图5 资源监视器
  • Process Explorer

    Process Explorer是一款Microsoft Sysinternals工具,通过配置正确的Symbols,检查对应应用程序的线程调用的Call Stack,用以定位可能的问题驱动。

    下载链接,请参考Precess Explorer

    图6 Process Explorer
  • 性能监视器

    性能监视器(Performance Monitor)是Microsoft专业收集各个组件性能计数器的工具。对于系统CPU资源消耗,有多个Counter来检查。

    在WIndows的搜索框中输入“性能监视器”即可打开,在曲线图区域右键单击“添加计数器(D)”,可以根据需要增加。

    图7 性能监视器

    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状态,需要减少线程的数量解决问题。

相关文档