商城类电商软件及服务提供商--HiShop海商,欢迎您!

北京公司| 深圳公司|

注册有礼

【干货推荐】云服务器ECS常见问题排查之 Linux 实例异常CPU占用率较高问题排查思路及CPU使用率100%处理办法

2019-03-30|HiShop|阅读量:
导读:阿里云服务器Linux遇到CPU使用率异常或使用率1000%应该怎么快速排查解决呢?...

  

  使用云服务器 ECS 时,若Linux遇到CPU使用率异常或使用率100%应该怎么快速排查解决呢?可以参考以下排查思路,有具体相关疑问可联系电话咨询,4006-333-292.

  ECS Linux 系统 CPU 占用率较高问题排查思路

  如果云服务器 ECS Linux 系统的 CPU 持续跑高,则会对系统稳定性和业务运行造成影响。本文对 CPU 占用率较高问题的排查分析做简要说明。

  CPU 负载查看方法

  使用 vmstat 查看系统纬度的 CPU 负载

  使用 top 查看进程纬度的 CPU 负载

  使用 vmstat 查看系统纬度的 CPU 负载

  您可以通过 vmstat 从系统维度查看 CPU 资源的使用情况。

  用法说明:

  命令:

  试用

  vmstat -n 1

  # -n 1 表示结果一秒刷新一次。

  示例输出:

  试用

  $ vmstat -n 1

  procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----

  r b swpd free buff cache si so bi bo in cs us sy id wa st

  0 0 0 70352 169448 448452 0 0 0 4 10 11 0 0 99 0 0

  0 0 0 70376 169448 448484 0 0 0 0 175 406 0 0 100 0 0

  0 0 0 70376 169448 448484 0 0 0 0 173 414 0 1 99 0 0

  0 0 0 70376 169448 448484 0 0 0 128 212 429 3 0 96 1 0

  ^C

  返回结果中的主要数据列说明:

  r:表示系统中 CPU 等待处理的线程。由于 CPU 每次只能处理一个线程,所以,该数值越大,通常表示系统运行越慢。

  us:用户模式消耗的 CPU 时间百分比。该值较高时,说明用户进程消耗的 CPU 时间比较多,比如,如果该值长期超过 50%,则需要对程序算法或代码等进行优化。

  sy:内核模式消耗的 CPU 时间百分比。

  wa:IO 等待消耗的 CPU 时间百分比。该值较高时,说明IO等待比较严重,这可能磁盘大量作随机访问造成的,也可能是磁盘性能出现了瓶颈。

  id:处于空闲状态的 CPU 时间百分比。如果该值持续为 0,同时 sy 是 us 的两倍,则通常说明系统则面临着 CPU 资源的短缺。

  使用 top 查看进程纬度的 CPU 负载

  您可以通过 top 从进程纬度来查看其 CPU、内存等资源的使用情况。

  用法说明:

  命令:

  试用

  top

  示例输出:

  试用

  top - 17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05

  Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie

  %Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.1 st

  KiB Mem: 1016656 total, 946628 used, 70028 free, 169536 buffers

  KiB Swap: 0 total, 0 used, 0 free. 448644 cached Mem

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

  1 root 20 0 41412 3824 2308 S 0.0 0.4 0:19.01 systemd

  2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd

  回显说明:默认界面上第三行会显示当前 CPU 资源的总体使用情况,下方会显示各个进程的资源占用情况。

  可以直接在界面输入大小字母 P,来使监控结果按 CPU 使用率倒序排列,进而定位系统中占用 CPU 较高的进程。最后,根据系统日志和程序自身相关日志,对相应进程做进一步排查分析,以判断其占用过高 CPU 的原因。

  操作案例

  使用 top 直接终止 CPU 消耗较大的进程

  如前面所述,可以通过 top 命令查看系统的负载问题,并定位耗用较多 CPU 资源的进程。

  您可以直接在 top 运行界面快速终止相应的异常进程。说明如下:

  想要终止某个进程,只需按下小写的 k 键。

  输入想要终止的进程 PID (top 输出结果的第一列)。比如,如下图所示,假如想要终止 PID 为 23 的进程,输入 23后按回车。

 

  操作成功后,界面会出现类似 Send pid 23 signal [15/sigterm] 的提示信息让用户进行确认。按回车确认即可。

  CPU 使用率较低但负载较高

  问题描述

  Linux 系统没有业务程序运行,通过 top 观察,类似如下图所示,CPU 很空闲,但是 load average 却非常高。

  处理办法

  load average 是对 CPU 负载的评估,其值越高,说明其任务队列越长,处于等待执行的任务越多。出现此种情况时,可能是由于僵死进程导致的。可以通过指令 ps -axjf 查看是否存在 D 状态进程。

  D 状态是指不可中断的睡眠状态。该状态的进程无法被 kill,也无法自行退出。只能通过恢复其依赖的资源或者重启系统来解决。

  kswapd0 进程占用 CPU 较高

  操作系统都用分页机制来管理物理内存,操作系统将磁盘的一部分划出来作为虚拟内存,由于内存的速度要比磁盘快得多,所以操作系统要按照某种换页机制将不需要的页面换到磁盘中,将需要的页面调到内存中,由于内存持续不足,这个换页动作持续进行,kswapd0是虚拟内存管理中负责换页的,当服务器内存不足的时候kswapd0会执行换页操作,这个换页操作是十分消耗主机CPU资源的。如果通过top发现该进程持续处于非睡眠状态,且运行时间较长,可以初步判定系统在持续的进行换页操作,可以将问题转向内存不足的原因来排查。

  问题描述

  kswapd0 进程占用了系统大量 CPU 资源。

  处理办法

  Linux 系统通过分页机制管理内存的同时,将磁盘的一部分划出来作为虚拟内存。而 kswapd0 是 Linux 系统虚拟内存管理中负责换页的进程。当系统内存不足时,kswapd0 会频繁的进行换页操作。而由于换页操作非常消耗 CPU 资源,所以会导致该进程持续占用较高 CPU 资源。

  如果通过 top 等监控发现 kswapd0 进程持续处于非睡眠状态,且运行时间较长并持续占用较高 CPU 资源,则通常是由于系统在持续的进行换页操作所致。则可以通过 free 、ps 等指令进一步查询系统及系统内进程的内存占用情况,做进一步排查分析。

  如果问题还未能解决,您可以到阿里云社区进行 免费咨询,或联系云市场商家 寻求帮助,其他专业服务请访问阿里云市场。

  Linux 实例异常CPU使用率100%

  使用 ECS 实例的过程中,您可能碰到 CPU 使用率异常,CPU使用率高达 100% 的情况。而且无法通过 top、htop 等命令查询到消耗 CPU 资源的具体进程。本文介绍了三个重点关注的 CPU 使用率异常的排查要素,根据查询异常时间节点和连接进而确定原因。

  查看 ECS 实例监控数据

  登录 ECS管理控制台找到异常实例,并单击实例名称。
       在实例详情页面的 CPU 监控信息中查询实例 CPU 监控数据。
       说明:查看监控数据时,关注以下 2 点。

  查看 CPU 使用率变成 100% 的起始点。

  查看 CPU 使用率突然为 100%,而且一直没有下降的时间点。

  检查系统命令修改记录

  远程连接并登录到 Linux 实例。

  执行以下命令查看系统命令最近是否被修改过。

  试用

  stat /usr/bin/top

  stat /bin/ps

  查看系统命令的更改时间,是否和 CPU 使用率出现 100% 的时间点吻合。

  执行 rpm 验证是否修改过系统命令。正常情况下,您应该查看不到修改信息。

  试用

  rpm -Vf /bin/ps

  rpm -Vf /usr/bin/top

  查看实例的对外连接

  执行命令 iftop -i eth1 -n -P 查看当前实例是否连接到异常域名,如示例中的 crypto-pool.fr。

  后续操作

  经过排查,当实例的 CPU 使用率异常到 100% 时,均符合以上三个特征,基本可以判断您的实例已经中毒,您需要:

  尽快备份实例的数据。参阅文档创建快照。

  重装系统,并参阅文档云服务器 ECS 被肉鸡了怎么办?巩固系统。

  如问题还未解决,请提交工单联系阿里云。

  使用 ECS 实例的过程中,您可能碰到 CPU 使用率异常,CPU使用率高达 100% 的情况。而且无法通过 top、htop 等命令查询到消耗 CPU 资源的具体进程。本文介绍了三个重点关注的 CPU 使用率异常的排查要素,根据查询异常时间节点和连接进而确定原因。

  查看 ECS 实例监控数据

  登录 ECS管理控制台。

  找到异常实例,并单击实例名称。在实例详情页面的 CPU 监控信息中查询实例 CPU 监控数据。

  说明:查看监控数据时,关注以下 2 点。

  查看 CPU 使用率变成 100% 的起始点。

  查看 CPU 使用率突然为 100%,而且一直没有下降的时间点。

  检查系统命令修改记录

  远程连接并登录到 Linux 实例。

  执行以下命令查看系统命令最近是否被修改过。

  试用

  stat /usr/bin/top

  stat /bin/ps

  查看系统命令的更改时间,是否和 CPU 使用率出现 100% 的时间点吻合。

  执行 rpm 验证是否修改过系统命令。正常情况下,您应该查看不到修改信息。

  试用

  rpm -Vf /bin/ps

  rpm -Vf /usr/bin/top

  查看实例的对外连接

  执行命令 iftop -i eth1 -n -P 查看当前实例是否连接到异常域名,如示例中的 crypto-pool.fr。

  后续操作

  经过排查,当实例的 CPU 使用率异常到 100% 时,均符合以上三个特征,基本可以判断您的实例已经中毒,您需要:

  尽快备份实例的数据。

  重装系统,并巩固系统。
 

  【阿里云,阿里巴巴集团旗下云计算品牌,全球卓越的云计算技术和服务提供商。海商(www.hishop.com.cn)作为阿里云湖南唯一授权服务中心,国内知名商城系统商城网站建设提供商,专为企业提供专业完善电商整体解决方案、微商云、视频云、医疗云等,咨询阿里云服务器详情可电联:18684778716(微信同号)】


【干货推荐】云服务器ECS常见问题排查之 Linux 实例异常CPU占用率较高问题排查思路及CPU使用率100%处理办法

 


    推荐阅读
      产品推荐
      • 社区新零售
        一款为「社区团购」业务模式量身打造的商城系统,适用于社区连锁门店、社区服务型企业、拥有货源优势的商家、连锁物业等。通过招募社区业主/店主当「团长」,建立社区微信群,在群内发起「团购」,以邻里关系聚合客源,群内互动让复购率更高。商家集中运营管理,轻松布局千百个社区! 详情
      关注HiShop