linux如何排查cpu持续飙高原因

噢,这是我在华为的时候发生的事。
此时,服务器 CPU 上升到 1 00%,客户端出现恐慌。

首先打开终端并输入 top 或 htop 查看进程是否正在旋转。
查看%CPU 列。
如果总 CPU 始终关闭超过 8 0%,那么您必须检查它。

我记得有一次,杭州数据中心的一个客户的服务器CPU出现了问题。
我抬头一看,发现Python脚本正在进行疯狂的现场计算,并添加了无限循环。
直接杀掉进程kill number-9 即可解决问题。

另一个例子,请参阅显示系统负载的 uptime 命令。
如果负载总是超过CPU核心数的两倍。
例如,如果您有一个 4 核 CPU,并且正常运行时间负载为 9 这意味着系统几乎繁忙。
我曾经在广东调试过一个系统,发现正常运行时间总是高于正常水平。
磁盘I/O速度慢;它检查CPU在那里等待,无法读写数据。

然后你 ps aux --sort=-%cpu |使用 Head 可以快速查看哪些进程的 CPU 最高。
我有一个朋友在北京。
他向他的服务器添加了一个计划任务。
他写错了。
结果CPU就满了。
使用该命令可以直接查找定时脚本。

接下来,您选择了一个高CPU进程使用 pidstat -p 继续监视它,或使用 trace -p 查看它在做什么。
到了上海,我查了一下为什么一个进程CPU高。
我使用 strace 来检查我是否正在疯狂地读写文件。
结果,文件系统被挂载;读取和写入均无响应,CPU 只是等待。
最后发现挂载点有问题。

如果进程是多线程的;您可以使用 top -H -p 查看哪个线程正在运行,或者使用 perftop -p 来分析它。
我之前在成都的一个电商系统工作过。
我发现CPU太高了,竟然是多线程的。
结果,perftop 显示相同的资源被抢占并锁定。

你也dmesg |可以使用 grep -i error 查看内核日志是否有错误或者 tail -f /var/log/messages 查看系统日志。
我有一个客户的服务器 CPU 非常高。
使用dmesg后,发现CPU过热,风扇不转。
我把散热器装进去,问题就消失了。

最后可以访问相关按钮、拦截次数;用vmstat 1 看看等等。
我之前在深圳,有一个服务器的CPU突然飙升。
我查看了 vmstat 和上下文更改的频率我发现它太高了。
我检查了进程争用太强,最后修复了进程优先级。

这些技巧我都是通过峡谷学会的,并且一一尝试过。
如果您确实无法判断,请考虑使用 bpftrace 或 sar 等高级工具。
但老实说,这些基本命令足以解决大多数问题。

Linux内存和CPU使用情况查询命令

我在公司的时候,非常关心Linux系统的监控。
我记得那时我们的服务器有时会很吵。
CPU使用率非常高,内存又不够用。
我必须自己解决这个问题。

有一次,我打开high命令一看,哇,CPU占用率好高,直接9 9 %了。
我知道我必须快速找出导致问题的进程。
经查,原来是数据库程序,循环很大,一执行就崩溃了。
那时我的心砰砰直跳。

当时我对vmstat了解不多,所以看到CPU占用率高的时候,我只是以为是内存不足。
结果用free -m 看到内存足够了,但是使用了很多交换空间。
后来我才知道,内存不足和交换空间不足是两个不同的事情。

再次发现服务器响应缓慢,I/O瓶颈严重。
我用 vmstat 看了一下,哇,wa 列(等待 I/O)中的值超出了图表。
那时,我知道驱动器出了问题。
后来又学习了iostat,一看原来是磁盘读写速度慢,IOPS低。

当时我还年轻,对多核CPU负载分析不太了解。
我只是用top看了一下,发现CPU占用率相当高,但是不知道哪个核心压力更大。
后来公司的专家来给我用mpstat分析一下,发现是某个核心超载了。

现在回想起来,那段时间我确实踩到了很多坑,但也学到了很多东西。
例如,要监控Linux系统,您应该学习以下命令:top、free-m、vmstat、mpstat、iostat。
它们就像我的眼睛,帮助我看到系统中的问题。

现在,我把这个告诉我的朋友,他们都说这非常有帮助。
和那位朋友一样,他最近也遇到了CPU占用率高的问题。
我分析了半天,让他用top和vmstat来查看。
当然,他的程序写得不好,导致CPU占用很多。

所以这些命令就是我们的武器。
如果使用得好,系统问题很容易解决。
不过,我只是这个领域的经验丰富的司机,一些高级操作我还是不敢说。
毕竟,实践带来真知。
嘿嘿

Linux系统中如何查看CPU使用率_Linux查看CPU使用率的具体方法

2 02 3 年,朋友想查看Linux系统的CPU使用情况,尝试了几种方法。
上周他第一次使用了top命令,简单直接。
界面顶部有一行%Cpu(s),一目了然。
关键是他发现CPU使用率是1 00减去Idle Ratio ID。
这种方法非常适合日常故障排除。
然后他尝试了htop。
这种改进的交互界面支持鼠标操作,并且色彩鲜艳。
看起来很酷,特别适合显示多核负载。
然后他使用了mpstat。
该工具可以提供用户状态、系统状态、I/O延迟等低级统计信息,是非常详细的分析。
最后,他还通过/proc/stat收到了原始数据,适合脚本处理,但他必须自己计算历史趋势。
一般来说,他更喜欢使用 top 或 htop 进行日常故障排除,使用 mpstat 进行详细分析,以及读取 /proc/stat 而不是脚本进行自动监控。
他表示,应该关注顶部ID(空闲)的1 00-id%等细节来计算使用情况,以及多核处理和单元一致性等小细节。
这部分我不太清楚,但他觉得这些方法可以让他灵活应对不同的监控需求,高效处理从快速排查到详细分析的一切。
算了,你自己想办法就行了,这些方法都很方便。