当CPU使用率达到100%该怎么办
不知道大家有没有遇到过服务器。CPU如果利用率达到100%,在实际生产环境中遇到这种情况该怎么办?
接下来,我将与您讨论:当CPU当利用率达到100%时,我们应该如何调查、定位和找出问题的根源。
CPU使用率
Linux作为一个多任务操作系统,每个任务操作系统都将被使用CPU时间分为短时间片,然后通过调度器轮流分配给每个任务,造成多任务同时进行的错觉。
CPU利用率:是的CPU非空闲时间占总时间CPU时间百分比
而CPU利用率也有许多重要的指标,我们可以通过 top 简单列出命令
user(缩写为 us),代表用户态 CPU 时间。注意,它不包括以下内容 nice 但包括时间 guest 时间。注意,它不包括以下内容 nice 但包括时间 guest 时间。
nice(缩写为 ni),代表低优先级用户态 CPU 时间,也就是过程 nice 值被调整为 1-19 之间时的 CPU 时间。这里注意,nice 可取值范围为 -20 到 19.值越大,优先级越低
system(缩写为 sys),代表内核态 CPU 时间。
idle(缩写为 id),代表空闲时间。注意,它不包括等待 I/O 的时间(iowait)。
iowait(缩写为 wa),代表等待 I/O 的 CPU 时间。
irq(缩写为 hi),代表处理硬中断 CPU 时间。
softirq(缩写为 si),软中断代表处理 CPU 时间。
steal(缩写为 st),当系统在虚拟机中运行时,它被其他虚拟机占用 CPU 时间。
如何查看CPU使用率
在介绍查看CPU在使用工具之前,让我们考虑一个问题:如何计算这些性能工具?CPU使用率的?
实际上,为了计算CPU在利用率方面,大多数性能工具通常在间隔一段时间(如3秒)的两次值之后,然后计算这段时间内的平均值CPU使用率
这个公式是大多数性能工具所看到的CPU实际计算利用率的方法。因此,在使用这些工具时,我们应该注意间隔时间的设置
top 工具和 ps 工具
top 和 ps 是最常用的性能分析工具,其中:
top 显示系统总体的CPU和内存使用情况,以及各个进程的资源使用情况
ps 显示每个进程的资源使用情况
sysstat 工具
除了上面这两个最常用的工具之外,我们还可以使用 sysstat 工具中的 pidstat 命令来查看进程的CPU使用率
上面这些工具你可以轻松找出哪个CPU使用率较高的进程,但是找到进程还不够,我们还想找出是哪个具体进程或者具体函数占用了如此高的CPU时间,这样才能进行更好的优化、
这里我推荐一个可以在第一时间分析进程的CPU问题的工具——perf
perf top
perf 是一种 Linux 内置的性能分析工具。它以性能事件采样为基础,不仅可以分析系统的各种事件和内核进程,还可以用来分析指定应用程序的性能问题
perf top 类似于 top ,它能够实时显示占用CPU时钟最多的函数或者指令,因此可以查找出热点函数
从输出结果我们可以看出:
第一行包含三个数据:采样数(Samples)、事件类型(event)和事件总数量(Event count)。这个例子中 perf 总共采集了833个CPU时钟时间,而总事件数为97742399
接着我们从列的角度来看:
第一列:Overhead ,是该符号的性能事件在所有采样中的比例,用百分比来表示
第二列::Shared ,是该函数或指令所在的动态共享对象(Dynamic Shared Object),如内核、进程名、动态链接库名、内核模块名等。
第三列 :Object 是动态共享对象的类型。比如 [.] 表示用户空间的可执行程序、或者动态链接库,而 [k] 则表示内核空间。
第四列:Symbol 是符号名,也就是函数名。当函数名未知时,用十六进制的地址来表示。
加粗样式perf record 、perf report
perf top 虽然实时展示了系统的性能信息,但是它并不能保存数据,就意味着无法用于离线或者后续的分析
而perf record 则提供了保存数据的功能,保存后的数据,需要你用 perf report 解析展示。
案例
下面我将用极客时间里的一个例子,来展现当我们发现CPU使用率过高的问题后,要怎么使用各种性能工具找出异常的进程,又要怎么利用各种工具找出引发性能问题的函数
这次案例里面,我们预先安装了 sysstat、perf、ab 等工具
左边这台用作 Web 服务器,来模拟性能问题;右边用作客户端,来给 Web 服务器增加压力请求
首先运行我们的 web 服务器,运行之后验证一下 Nginx 是否正常开启
接下来我们在客户端测试一下 web 服务器的性能
从ab的输出可以看到,Nginx能承受的每秒平均请求数只有11.63。这个结果说明Nginx 目前的性能不尽人意,我们先用top和pidstat看一下到底是哪里出了问题
运行ab命令,持续给Nginx压力,方便我们使用性能分析工具
运行 top 命令,按下数字1,切换到每个CPU使用情况(单核系统不需要按)
这里我们可以看到:
系统中这几个php-fpm进程的CPU使用率加起来将近200%;而每个CPU的用户态使用率(us)也已经超过了98%
所以我们可以得出结论:用户空间的php-fpm进程,导致了CPU使用率骤升
接下来我们需要找出 php-fpm 进程里面哪个函数导致了CPU使用率的升高
首先运行我们的 perf top 命令,实时分析进程的CPU问题
按方向键切换到php-fpm,再按下回车键开php-fpm的调用关系,你会发现,调用关系最终到了sqrt 和add_ function函数。
找出了函数后我们再查看源码并修改优化
优化后我们再测试一下
热门推荐
-
电脑日常使用,CPU更注重单核性能还是多核性能?
日常使用单核性能更重要举个例子初代锐龙1700这种,很多应用和游戏打不过i7-77008核低频至强,... -
怎么测试显卡性能
是一款衡量显卡性能的软件,其已渐渐转变成了一款衡量整机性能的软件。通过以上选项进行测试,将分数与网友... -
七彩虹和华硕显卡,有性能上的差别么?
性能几乎没有差别。原因是同型号显卡的核心是一样的,都是 Geforce RTX 3060,核心决定了... -
iPhone受监管怎么解除?
one受监管?什么是监管?取消不了?那怎么办,有办法完美解除吗?我在前面跟大家讲过监管机怎么分辨,其... -
主流CPU性能对比(国际象棋测试 2017版)
测试的软件为Fritz Chess Benchmark 4.2版测试方法采取了单核性能与多核性能修正... -
Mac小白必看 Mac电脑如何查看macOS中的GPU使用教程
在使用Mac电脑时候我们可以通过查看cpu的使用率,来关闭一些占用内存较大的应用,mac系统中的CP... -
淘宝的售后保修服务有必要购买吗?
所以超过一次才能派上用场的全面保修性价比很低。③延长保修是指纯粹延长商品的保修期限,它是从商品自带的... -
为什么nubia手机可以拍星空
手机为了保证曝光量及低噪点,必须通过延长曝光时间和降低ISO的方式实现星空拍摄。问题又来了。由于地球... -
冰箱长时间断电不用,会有什么后果?
如果冰箱长时间不使用,制冷剂会因为没有冷冻油的保护而加速管道腐蚀,从而损坏冰箱的内部功能。此外,如果... -
超频对CPU的提升到底有多少?
初始频率只有2.66GHz睿频2.93GHz,能超频到4GHz——超频幅度50%的不少见,保守一点超... -
最全面的激活工具,一定要收藏
Office激活失败,今天默默分享新版本的激活工具HEU KMS Activator 26.2.1,... -
怎么测试电脑性能
对于旧电脑,压力测试可以检测其硬件稳定性。是一个必不可少的检测,除了鲁大师和3Dmark,还有fur... -
红米note手机开不了机怎么刷机
安装完成才能进行刷机,若下图中端口显示不一致,则查看最下方详细驱动教程,一致则直接刷机即可,注意进手... -
希捷移动硬盘怎么样
地评价希捷移动硬盘的性能、性价比、质保和特色功能。因此,在同一产品质量水平一致的情况下,可以更客观地... -
怎么提高显卡性能
将性能调整最大化,并保存设置。3、在「管理3D设置」中,将首选图形处理器更改为「高性能NVIDIA处... -
怎么看cpu温度
从解决实际问题的角度推荐两款可以查看、监控、cpu温度的软件。轻量级工具:Core Temp,专业的... -
作为一个电脑小白,如何看懂电脑配置?
,8G内存,指的就是内存的大小,一般同代的内存越大性能就越好,因此大家选电脑时,优先选择大内存。2:... -
笔记本玩游戏卡怎么办?
三:鲁大师降频会影响电脑性能,可以自己去 控制面板计划(平衡),改变高级电源设置,控制面板,硬件和声... -
当CPU使用率达到100%该怎么办
它被其他虚拟机占用 CPU 时间。如何查看CPU使用率在介绍查看CPU在使用工具之前,让我们考虑一个... -
vivo怎么关掉锁屏上显示的时间?
先找到桌面锁屏与壁纸点进去之后,看到熄屏设置关掉就行 -
超实用小工具:华为天气小工具,双指捏合玩出新花样!
天气小工具不见了?待办事项太多担心忘记?双时钟如何在桌面显示……在手机桌面空白区域双指捏合,就能添加... -
CPU使用率飙升至100%?按这3步走,找出罪该祸首
u使用率高达100%,那就意味着cpu在这台电脑中的性能已经火力全开,cpu高负载运行已经达到了该C... -
闹钟时间怎么调
下来调时间,由于Timer是计时器,也就是按一下按钮切换到该模式,屏幕就应该出现00:00:00,再... -
怎么拍延时
e-lapse photography)是以一种较低帧率拍下的照片或者视频,然后用正常或者较快的速率... -
iPhone激活时间怎么查
激活时间怎么查 苹果激活时间查看法在“通用”里找到“关于本机”,点击它打开。iPhone激活时间怎么...