Linux CPU 占用异常排查方法

2次阅读

linux cpu占用异常排查有五种方法:一、用top实时排序定位高耗进程;二、用ps快照筛选前n高cpu进程;三、用pidstat定时采样识别波动异常;四、用perf追踪函数级热点;五、用/proc/interrupts和sar检查中断分布。

Linux CPU 占用异常排查方法

如果您发现 Linux 系统响应迟缓、服务超时或进程运行异常,则可能是由于 CPU 占用率持续过高所致。以下是排查 CPU 占用异常的多种方法:

一、使用 top 命令实时查看进程级 CPU 使用情况

top 是一个动态实时显示系统资源占用的终端工具,可按 CPU 使用率排序列出所有活跃进程,便于快速定位高消耗进程。

1、在终端中输入 top 并回车,进入交互界面。

2、按下 P(大写)按键,按 CPU 使用率从高到低排序。

3、观察顶部显示的 %CPU 总体负载及各进程的 %CPU 列数值,重点关注持续高于 80% 的进程 PID。

4、记下可疑进程的 PID,按 q 退出 top。

二、使用 ps 命令快照式筛选高 CPU 进程

ps 提供一次性快照,配合排序与过滤可精准提取当前 CPU 占用最高的前 N 个进程,适合脚本化或批量分析场景。

1、执行命令:ps -eo pid,ppid,%cpu,%mem,cmd –sort=-%cpu | head -n 11

2、该命令输出包含表头共 11 行,其中第 2 行起为 CPU 占用率由高到低排列的进程信息。

3、检查输出中 %cpu 列值显著高于其他进程的条目,确认其 cmd 列对应的实际程序路径与参数。

三、使用 pidstat 定期采样并识别波动型 CPU 异常

pidstat 可按指定时间间隔持续采集每个进程的 CPU 使用率,有助于发现间歇性爆发或周期性飙升的异常行为。

1、安装 sysstat 包(如未安装):sudo apt install sysstatdebian/ubuntu)或 sudo yum install sysstat(RHEL/centos)。

2、运行采样命令:pidstat -u 2 5,表示每 2 秒采集一次,共采集 5 次。

3、观察输出中 %usr(用户态)与 %system(内核态)列,若某 PID 在多次采样中均显著偏高,即为潜在问题源。

四、使用 perf 工具追踪 CPU 时间消耗热点

perf 是 Linux 内核提供的性能分析工具,可深入函数级别定位 CPU 时间实际花费位置,适用于已知进程但无法判断具体代码路径的场景。

1、确保已安装 perf:sudo apt install linux-tools-common linux-tools-$(uname -r)(Ubuntu)或 sudo yum install perf(RHEL/CentOS)。

2、对目标进程采集 10 秒调用sudo perf record -g -p PID — sleep 10,其中 PID 替换为实际进程号。

3、生成火焰图式报告:sudo perf report -g –no-children,按方向键浏览各函数的 CPU 时间占比。

五、检查内核软中断与硬中断分布

当 CPU 时间大量消耗在 system(%sy)而非 user(%us)时,需排查是否由频繁中断(如网卡、磁盘、定时器)引发,尤其常见于高吞吐网络服务环境。

1、运行命令查看各 CPU 上中断统计:cat /proc/interrupts

2、关注 IPI、NET_RX、TIMER、eth0-TxRx 等字段数值是否远高于其他行,单列数值持续增长表明对应设备或子系统触发频繁。

3、结合 sar -I ALL 1 3 输出,确认每秒中断总数(INTR)及各中断类型占比变化趋势。

text=ZqhQzanResources