文档平台 云服务器 故障处理 性能相关故障 CPU 使用率过高(Linux 系统)

CPU 使用率过高(Linux 系统)

最近更新时间:2018-08-06 14:45:55

查看pdf

CPU 使用率过高,容易引起服务响应速度变慢、服务器登录不上等问题。可以使用 云监控,创建 CPU 使用率阈值告警,当 CPU 使用率超过阈值时,将及时通知到您。
CPU 使用率过高排查的步骤大致为:定位消耗 CPU 的具体进程,对 CPU 占用率高的进程进行分析。如果为异常进程,可能是病毒或木马导致,可以自行终止进程,或者使用安全软件进行查杀;如果是业务进程,则需要分析是否由于访问量变化引起,是否存在优化空间;如果是腾讯云组件进程,请 发起工单 联系我们进行进一步定位处理。
下面将介绍 Linux 系统下如何定位出 CPU 使用率过高的进程。

定位工具介绍:top 命令

top:Linux 系统下常用的监控工具,用于实时获取进程级别的 CPU 使用情况。下图是 top 命令的输出信息。

上半部分显示 CPU 和内存资源的总体使用情况:
第一行:系统当前时间,当前登录用户个数以及系统负载。
第二行:系统总进程数、运行中进程数、休眠、睡眠和僵尸进程数量。
第三行:CPU 当前使用情况。
第四行:内存当前使用情况。
第五行:swap 空间当前使用情况。

下半部分以进程为维度显示资源的占用情况。
PID:进程 ID。
USER:进程所有者。
PR:进程优先级 NI:NICE 值,NICE 值越小,优先级越高。
VIRT:使用的虚拟内存大小,单位 KB。
RES:当前使用的内存大小,单位 KB。
SHR:使用的共享内存的大小,单位 KB。
S:进程状态。
%CPU:更新时间间隔内进程所使用的 CPU 时间的百分比。
%MEM:更新时间间隔内进程所使用的内存的百分比。
TIME+:进程使用的 CPU 时间,精确到 0.01s。
COMMAND:进程名称。

问题定位及处理

使用工具定位 CPU 使用率高的进程

前面介绍了 top 工具,下面介绍如何利用该工具定位出 CPU 使用率高的进程。

  1. 通过 SSH 或者 VNC 方式登录实例
    说明:CPU 使用率过高,容易引起服务器登录不上,此时可以尝试使用 VNC 登录的方式。使用 VNC 登录实例的方法详见 登录Linux 实例 相关小节。

  2. 输入 top 命令查看系统负载。

  3. 输入大写 P,进程按 CPU 使用率降序排列;通过排序,可以方便得获得占用 CPU 资源较多的进程,进行进一步的分析。

  4. 分析占用 CPU 高的进程。

    1. 如果为业务进程,建议分析业务程序是否有优化空间,进行优化或者提升实例的资源配置。
    2. 如果为异常进程,实例可能中毒,可以自行终止进程、使用安全软件进行查杀或者进行数据备份后,重装系统。
    3. 如果为腾讯云组件进程,占用 CPU 超过 20%,请 发起工单 联系我们进行进一步定位处理。
      常见的腾讯云组件有:
      sap00x:安全组件进程
      Barad_agent:监控组件进程
      secu-tcs-agent:安全组件进程

使用 top 命令结束进程

  1. 键入小写 k,输入想要结束进程的 pid(默认为排序第一的进程),回车。
  2. 操作成功,界面会出现 Send pid 984 signal [15/sigterm] 的提示信息,回车确认即可。

kswapd0 进程占用 CPU 较高的处理

kswapd0 是 Linux 系统虚拟内存管理中负责换页的进程。Linux 系统通过分页机制管理内存的同时,将磁盘的一部分划出来作为虚拟内存。当系统内存不足时,kswapd0 会频繁的进行换页操作。换页操作非常消耗 CPU 资源,导致该进程持续占用高 CPU 资源。
如果使用 top 命令,看到 kswapd0 进程持续占用大量 CPU 资源,可以进一步使用 vmstat,查看系统的虚拟内存的情况,如果 si,so 也比较高,证明系统存在频繁的换页操作,当前的系统物理内存已经不能满足需要,考虑升级系统的内存。