Linux下CPU利用率过高的排查要领

查察CPU利用
在 Linux 系统下,利用 top 呼吁查察 CPU 利用环境。

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


us(user):暗示 CPU 在用户运行的时间百分比,凡是用户 CPU 高暗示有应用措施较量忙碌。典范的用户措施有:数据库、Web 处事器等。
sy(sys):暗示 CPU 在内核态运行的时间百分比(不包罗间断),凡是内核态 CPU 越低越好,不然暗示系统存在某些瓶颈。
ni(nice):暗示用 nice 批改历程优先级的用户历程执行的 CPU 时间。nice 是一个历程优先级的批改值,假如历程通过它修改了优先级,则会单独统计 CPU 开销。
id(idle):暗示 CPU 处于空闲态的时间占比,此时,CPU 会执行一个特定的虚拟历程,名为 System Idle Process。
wa(iowait):暗示 CPU 在期待 I/O 操纵完成所耗费的时间,凡是该指标越低越好,不然暗示 I/O 存在瓶颈,可以用 iostat 等呼吁做进一步阐明。
hi(hardirq):暗示 CPU 处理惩罚硬间断所耗费的时间。硬间断是由外设硬件(如键盘节制器、硬件传感器等)发出的,需要有间断节制器参加,特点是快速执行。
si(softirq):暗示 CPU 处理惩罚软间断所耗费的时间。软间断是由软件措施(如网络收发、按时调治等)发出的间断信号,特点是延迟执行。
st(steal):暗示 CPU 被其他虚拟机占用的时间,仅呈此刻多虚拟机场景。假如该指标过高,可以查抄下宿主机或其他虚拟机是否异常。

排查用户 CPU 利用率高
用户 CPU 利用率反应了应用措施的忙碌水平,凡是与我们本身写的代码息息相关。
操纵步调:
1)、通过 top 呼吁找到 CPU 耗损最多的历程号;

Linux下CPU利用率过高的排查要领


2)、通过 top -Hp 历程号呼吁找到 CPU 耗损最多的线程号(列名仍然为 PID);

Linux下CPU利用率过高的排查要领


3)、通过printf "%x\n" 线程号呼吁输出该线程号对应的 16 进制数字;

4)、PID历程在内核挪用环境。假如是Java应用可通过 jstack 历程号 | grep 16进制线程号 -A 10 呼吁找到 CPU 耗损最多的线程要领仓库。
长短 Java 应用可利用 perf

perf top -p 7574

假如提示perf: command not found,利用yum install perf安装。

Linux下CPU利用率过高的排查要领


perf是Linux 2.6+内核中的一个东西,在内核源码包中的位置 tools/perf。
perf操作Linux的trace特性,可以用于及时跟踪,统计event计数(perf stat);可能利用采样(perf record),陈诉(perf report|script|annotate)的利用方法举办诊断。

Linux公社的RSS地点https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdjgj.html