Linux服务器CPU使用率或CPU负载较高问题的排查及解决方案

本文主要介绍当Linux系统ECS实例CPU使用率或CPU负载较高时,如何排查分析及常见案例说明。

操作场景

在您使用ECS实例过程中,可能会遇到实例CPU使用率或CPU负载持续较高的情况,您可以按照以下步骤排查定位具体问题。

  1. 找到影响CPU使用率或CPU负载过高的具体进程。

  2. 排查影响CPU使用率或CPU负载过高的进程是否正常,并分类进行处理。

    • 对于正常进程:您需要对程序进行优化或者升配实例规格。具体操作,请参见包年包月实例升配规格或按量付费实例变配规格。

    • 对于异常进程:您可以手动对进程进行查杀,也可以使用第三方安全工具去查杀。

CPU负载的查询分析

在Linux系统中,查看进程的常用命令如下所示。本文主要介绍vmstat和top常用命令的使用。

  • vmstat

  • top

  • ps -aux

  • ps -ef

vmstat命令的使用

top命令的使用

vmstat(VirtualMemoryStatistics,虚拟内存统计),通过vmstat命令,从系统维度查看操作系统的虚拟内存、进程、CPU等的整体情况。

vmstat命令

常用vmstat命令如下所示。

vmstat [-n] [delay [count]] 

说明

  • [-n]:只在开始时显示一次各字段名称。

  • [delay]:刷新时间间隔。如果不指定,只显示一条结果。

  • [count]:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。

使用示例

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

vmstat -n 1 4

返回示例类似如下。

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st1  0      0 2684984 310452 2364304    0    0     5    17   19   35  4  2 94  0  00  0      0 2687504 310452 2362268    0    0     0   252 1942 4326  5  2 93  0  00  0      0 2687356 310460 2362252    0    0     0    68 1891 4449  3  2 95  0  00  0      0 2687252 310460 2362256    0    0     0     0 1906 4616  4  1 95  0  0

显示结果主要字段说明

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

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

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

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

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

常见CPU资源过高案例分析

案例一:CPU使用率较低但负载较高

问题现象

当前Linux系统没有业务程序运行。通过top命令观察,发现CPU使用率不高,但是CPU负载(load average)却非常高,如下图所示。

问题原因

该问题可能是因为僵尸(zombie)进程过多导致。

load average是对CPU负载进行评估的,其值越高说明其任务队列越长,处于等待执行的任务越多。

解决方案

您可以通过ps -axjf命令查看是否存在D+状态进程,该状态是指不可中断的睡眠状态。

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

案例二:kswapd0进程占用CPU较高

问题现象

ECS实例运行卡顿,使用top命令查看,kswapd0进程占用了99% CPU。

问题原因

出现该问题可能是系统此时在持续进行换页操作,导致占用大量CPU资源。

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

解决方案

您可以通过修改vm.swappiness内核参数来控制交换空间的大小,来解决kswapd0进程占用CPU较高的问题。

  1. 登录Linux实例。

    具体操作,请参见连接方式概述。

  2. 查看swappiness参数。

    cat /proc/sys/vm/swappiness

    系统显示类似如下,表示当物理内存低于60%(100-40)时使用swap空间。

    说明

    swappiness参数越低,表示Linux系统尽量少用swap分区,多用物理内存;swappiness参数值越高,表示使内核更多地去使用swap空间。

    查看swap

  3. 根据业务需要,修改swappiness参数。

    1. 打开内核参数配置文件sysctl.conf。

      vi /etc/sysctl.conf
    2. 根据业务需要,修改swappiness参数值。

      如在sysctl.conf文件中,修改vm.swappiness = 10

    3. Esc键,输入:wq保存修改。

    4. 重新加载sysctl配置文件,使配置生效。

      sysctl -p

      若该问题还未解决,建议您升配实例规格。具体操作,请参见包年包月实例升配规格或按量付费实例变配规格。

案例三:CPU使用率过高100%问题排查

问题现象

使用ECS实例的过程中,如果遇到CPU使用率高达100%等异常情况,且无法通过top、htop等命令查询到消耗CPU资源的具体进程。

问题原因

该问题可能是病毒导致。

解决方案
  1. 查看云监控监控数据。

    1. 登录云监控管理控制台。

    2. 在左侧导航栏,单击主机监控

    3. 找到异常主机,单击操作列的监控图表

    4. 操作系统监控页签下,查看该主机的CPU使用率并记录具体时间点。

  2. 查看Linux实例的命令修改记录。

    1. 登录Linux实例。

      具体操作,请参见连接方式概述。

    2. 执行如下命令,查看当前Linux系统命令最近是否被修改过。

      stat /usr/bin/top

      系统显示类似如下,系统命令有被修改。查看更改时间是否和云监控中CPU使用率出现100%的时间点吻合。

      CommandChanges

  3. 分别执行如下命令,查看pstop命令是否被修改过。

    rpm -Vf /bin/ps
    rpm -Vf /usr/bin/top
    • 正常情况下,系统无返回修改信息。

    • 系统异常情况下,显示类似如下,表示pstop命令被修改过。

      CommandQuery

  4. 执行如下命令,查看当前实例是否连接到异常域名。

    iftop -i [$Device] -n -P

    说明

    [$Device]请替换为当前系统使用的网卡,如eth0。

    系统显示类似如下,若您没有连接过crypto-pool.fr,则crypto-pool.fr是异常域名。

  5. 综合以上表现,top、ps命令被修改,并且连接到异常域名,判断您的ECS实例已被病毒入侵,可以参考以下方案。

    1. 备份ECS实例数据,具体操作,请参见创建一个云盘快照。

    2. 重新初始化系统盘,然后使用云安全中心对ECS实例进行安全加固。更多信息,请参见重新初始化系统盘和什么是云安全中心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/389374.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日期刊分享

检索:知网 G4 刊期:现收25年3-4月刊版面,预计25年4-5月出刊: 收稿范围:收小学到高中的教育教学稿件

react高级组件ProForm实现输入框搜索

实现界面 <Col span{12}><ProForm.Itemname"name"label"推荐用户"><AutoCompleteclassName"pro-field pro-field-md"placeholder"请输入用户名"options{NameArr}onSearch{debounce(searchUser, 500)}onSelect{onSelect…

MATLAB(9)GIS模型

一、介绍 在GIS&#xff08;地理信息系统&#xff09;中&#xff0c;模型的实现可以非常多样化&#xff0c;取决于你想要解决的具体问题。MATLAB作为一个强大的数值计算和可视化工具&#xff0c;可以被用来开发GIS相关的模型&#xff0c;尽管它不是专门为GIS设计的&#xff08…

jeecguniapp上传附件/图片及预览

一、上传图片 具体页面显示是 注意事项是传递除文件外的参数需要包在formData里 formData:{UUID:that.state.id,type:bill,}, 二、预览图片及附件 重点是附件预览图片预览即图片更换图片path显示 pdf预览代码 同事写的给的笔记及注意事项

亚马逊自养买家账号的优点和测评优势

很多人可能会认为&#xff0c;自行培育买家账号&#xff08;即自养号&#xff09;的成本相对较高&#xff0c;如果仅仅用于产品测评&#xff0c;可能会觉得性价比不高。然而&#xff0c;买家账号在电商运营中其实拥有多重重要作用&#xff0c;远不止于简单的测评功能。 那么&am…

文案人的梦工场,网易入职指南!

网易云对于咱们一些有点文艺的文案策划来说&#xff0c;简直就是梦中情司。 在这里工作锻炼机会很多&#xff0c;也很开拓眼界&#xff0c;能获得相当于在别处3倍能力的成长速度&#xff0c;福利待遇也是很好的。 要进入网易云音乐做文案策划&#xff0c;你可以按照以下步骤进…

qiankun 微前端 隔离子应用样式,解决 ant-design-vue 子应用样式污染问题(已落地)

样式冲突产生原因 先分析乾坤qiankun 构建之后&#xff0c;会根据你的配置 给每个子应用生成一个id&#xff0c; 当加载到对应子应用的时候&#xff0c;就把内容放到对应的id 标签里去&#xff0c; 这样能有效的隔离 js 代码&#xff0c;但是样式是加载在全局的 所以 当两个子…

全开源TikTok跨境商城源码/TikTok内嵌商城+搭建教程/前端uniapp+后端

多语言跨境电商外贸商城 TikTok内嵌商城&#xff0c;商家入驻一键铺货一键提货 全开源完美运营 海外版抖音TikTok商城系统源码&#xff0c;TikToK内嵌商城&#xff0c;跨境商城系统源码 接在tiktok里面的商城。tiktok内嵌&#xff0c;也可单独分开出来当独立站运营 二十一种…

大模型之技术概述

本文作为大模型综述第一篇&#xff0c;介绍大模型技术基本情况。 目录&#xff1a; 1.大模型技术的发展历程 2.大模型技术的生态发展 3.大模型技术的风险与挑战 1.大模型技术的发展历程 2006 年 Geoffrey Hinton 提出通过逐层无监督预训练的方式来缓解由于梯度消失而导致的…

HyperDiffusion阅读

ICCV 2023 创新点 HyperDiffusion&#xff1a;一种用隐式神经场无条件生成建模的新方法。 HyperDiffusion直接对MLP权重进行操作&#xff0c;并生成新的神经隐式场。 HyperDiffusion是与维度无关的生成模型。可以对不同维度的数据用相同的训练方法来合成高保真示例。 局限性…

贪心算法—股票交易时机Ⅱ

在此前我们已经介绍过贪心算法以及股票交易时机Ⅰ&#xff0c;有需要的话可以移步至贪心算法_Yuan_Source的博客-CSDN博客 题目介绍 122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第…

楼宇智能技术实训室解决方案

一、楼宇智能技术实训室建设背景 随着信息技术的迅猛发展&#xff0c;智能化已经成为现代建筑发展的重要趋势。楼宇智能技术&#xff0c;作为智能化建筑的核心支撑&#xff0c;集成了物联网、大数据、云计算、人工智能等多种先进技术&#xff0c;实现了楼宇内部各类设施、系统…

【Java算法专场】前缀和(上)

前言 在求数组或者矩阵求和等问题&#xff0c;我们如果采用暴力解法&#xff0c;时间复杂度可能会达到O(n)或者更高&#xff0c;因此&#xff0c;我们可利用前缀和来解决。 前缀和 前缀和是指序列中的n项和&#xff0c;相当于数学问题中秋数列的前n项和。主要用于数组或列表中…

ElasticSearch入门(六)SpringBoot2

private String author; Field(name “word_count”, type FieldType.Integer) private Integer wordCount; /** Jackson日期时间序列化问题&#xff1a; Cannot deserialize value of type java.time.LocalDateTime from String “2020-06-04 15:07:54”: Failed to des…

【C++】学习笔记——C++的类型转换

文章目录 二十三、C的类型转换1. C语言中的类型转换2. C类型转换static_castreinterpret_castconst_castdynamic_cast 未完待续 二十三、C的类型转换 1. C语言中的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#x…

声学改造后的气膜馆:提升体验的独特优势—轻空间

气膜馆因其快速建造、低成本和灵活性&#xff0c;近年来广泛应用于各种运动和活动场所。然而&#xff0c;传统气膜馆在声学表现上存在一些挑战&#xff0c;例如回声和噪音的控制。随着声学改造技术的应用&#xff0c;气膜馆的声学环境得到了显著改善。轻空间将探讨声学改造后的…

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

目录 0 专栏介绍1 数值优化:共轭梯度法2 基于共轭梯度法的轨迹优化2.1 障碍约束函数2.2 曲率约束函数2.3 平滑约束函数3 算法仿真3.1 ROS C++实现3.2 Python实现0 专栏介绍 🔥课设、毕设、创新竞赛必备!🔥本专栏涉及更高阶的运动规划算法轨迹优化实战,包括:曲线生成、…

2024年对初学者友好的4款视频剪辑软件不容错过

在这个视觉当道的时代&#xff0c;视频剪辑不再是专业人士的专属领域。随着技术的进步&#xff0c;现在即使是初学者也能轻松上手&#xff0c;发挥自己的创意。今天&#xff0c;我来给大家推荐四款在2024年非常适合初学者使用的视频剪辑软件&#xff0c;让你的创意能够在指尖轻…

Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules。Android studio纯java代码报错

我使用java代码 构建项目&#xff0c;初始代码运行就会报错。我使用的是Android Studio Giraffe&#xff08;Adroid-studio-2022.3.1.18-windows&#xff09;。我在网上找的解决办法是删除重复的类&#xff0c;但这操作起来真的太麻烦了。 这是全部报错代码&#xff1a; Dupli…

VLC实现视频文件转RTSP流

1.选择本地文件 2.创建流 现在已经开始推流了&#xff1a; 3.播放上面创建的流 访问地址&#xff1a;rtsp://:8554/test111