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

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

问题描述

  • 系统运行卡顿、服务响应时长较长、应用性能下降等问题。
  • 通过ECS控制台查看实例CPU使用率监控时,发现CPU使用率过高(参考值:当前CPU 使用率> 80%,可认为CPU使用率过高)。
  • 收到CPU使用率超过设定阈值的告警信息。

排查方法

本文相关操作命令以CentOS 7.9 64位操作系统为例。其它版本的Linux操作系统命令可能有所差异,具体情况请参阅相应操作系统的官方文档。

  1. 使用top命令排查CPU占用高的具体进程。

    1. 登录弹性云服务器,具体操作,请参见Linux ECS登录方法概述
    2. 执行如下命令查看当前系统的运行状态。

      top

      系统回显样例如下:

      图1 操作结果
      查看显示结果。
      • 命令回显第一行:
        14:55:18 up 1 day, 35 min,  1 user,  load average: 0.00, 0.01, 0.05

        表示系统当前时间为14:55:18该云服务器已运行1天,当前共有1个用户登录, 最近1分钟、最近5分钟和最近15分钟的CPU平均负载分别为0.00、0.01、0.05。

      • 命令回显第二行为进程统计:
        Tasks: 106 total,   1 running, 105 sleeping,   0 stopped,   0 zombie

        表示当前系统内总进程数为106个,其中:1个在运行(running),105个睡眠状态(sleeping) ,0个已停止(stopped)进程,0个僵尸进程(zombie)

      • 命令回显第三行为CPU总体使用情况:
        %Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

        每个字段含义如下:

        • us:用户态进程占用CPU百分比(应用程序占用)。
        • sy:内核占用CPU百分比(系统调用)。
        • id:空闲CPU百分比(越高表示系统越空闲)。
        • wa:等待I/O操作的CPU时间(较高时需排查磁盘性能)。
        • hi/si:硬件/软件中断占用。
        • st:虚拟化环境中被宿主机占用的CPU时间。
      • 命令回显第四、第五行为内存使用情况。
      • 回显最下方为各进程的资源占用情况。
        • 输入大写P键,可以对CPU使用率进行倒序排列,方便定位系统中占用CPU较高的进程。
        • 输入大写M键,使用内存使用情况进行排序。
        • 如果有多核CPU,数字键1可以显示每核CPU的负载状况。
        • 输入小写“q”退出top界面。
        • 左边第一列为进程PID,记录下占用CPU高的进程PID,使用如下命令查看该进程的详细命令行信息:
        • ps –elf | grep <进程PID>

  2. 使用vmstat命令查看系统资源使用信息。

    vmstat(Virtual Memory Statistics)是用于报告虚拟内存统计信息的命令,可以使用该命令,从系统维度查看操作系统的虚拟内存、进程、CPU等指标信息。

    • vmstat命令的使用格式如下:

      vmstat [-n] [delay [count]]

      表1 常用参数说明

      参数选项

      说明

      -n

      只在开始时显示一次各字段名称。

      [delay]

      刷新时间间隔。如果不指定,只显示一条结果。

      [count]

      刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,刷新操作不会自动停止,您需要按Ctrl+C键退出vmstat程序。

    • vmstat命令使用示例

      执行如下命令,使用vmstat每1秒统计一次各进程的CPU使用情况,连续统计4次。

      vmstat -n 1 4

      图2 操作结果

      回显结果主要字段说明如下。

      • r:表示系统中CPU等待处理的线程。一个CPU每次只能处理一个线程,所以该数值越大,通常表示系统运行越慢。
      • b:表示正在等待 I/O 完成,被阻塞的进程数。
      • us:用户模式消耗的CPU时间百分比。该值较高时,说明用户进程消耗的CPU时间比较多。如果该值长期超过50%,则需要对程序算法或代码等进行优化。
      • sy:内核模式消耗的CPU时间百分比。
      • wa:I/O等待消耗的CPU时间百分比。该值较高时,说明IO等待比较严重,这可能是磁盘大量作随机访问造成的,也可能是磁盘性能出现了瓶颈。
      • id:处于空闲状态的CPU时间百分比。如果该值持续为0,同时sy是us的两倍,则通常说明系统面临CPU资源短缺。

  3. 常见CPU占用较多问题的原因及解决方案。

    表2 常见CPU占用较多问题的原因及解决方案

    问题现象

    原因

    解决方案

    异常程序或进程长时间占用大量CPU资源,导致CPU使用率和负载较高。

    该程序为异常程序或进程,运行时占用过多CPU资源。

    • 通过在top工具定位到占用CPU资源较多的程序的PID,并通过如下方式结束进程。
      注意:

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

    • 通过kill -15 <进程PID>来结束该进程。
    • 如果怀疑进程为恶意程序,您可以对其进行查杀,相关操作,请参见病毒查杀

    正常用户程序或进程长时间占用大量CPU资源。导致CPU使用率和负载较高。

    该程序为正常业务程序或进程,运行时占用过多CPU资源。

    如果实例出现CPU性能瓶颈,您可以结合实际情况选择相应的处理策略。

    • 升级实例规格相关操作。请参见变更实例规格
    • 优化业务程序。

    单个业务程序或进程偶发CPU使用率及负载较高,但持续时间较短,且发生频率较低。

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

    优化业务程序。

    top显示CPU使用率不高,但云服务器基础监控中CPU使用率很高。

    系统被入侵导致top结果不可信。

    建议您进行病毒查杀,相关操作,请参见病毒查杀

    kswapd0进程持续占用较高CPU

    kswapd0是虚拟内存管理中负责换页的进程,当ECS实例物理内存不足时,kswapd0会执行换页操作,换页操作会消耗大量的CPU资源。

    可以将问题转向内存不足的原因来排查。详见内存使用率高问题排查。

    CPU使用率低但负载很高

    系统内存在大量D状态进程,vmstat回显中b列。

    可通过如下命令查看D状态进程信息:

    ps -elf | grep " D" | grep -v grep

    处于D状态的进程无法终止,也无法自行退出,只能通过恢复其依赖的资源或者重启系统来解决。

相关文档

如果是偶现的CPU冲高,无法直接观测,则需要安装atop工具定位,详见安装atop

相关文档