排查线上程序出现了CPU或内存高占用的原因

Linux 下可以通过 top 命令查看系统的健康状态,按下「1」来打开 CPU 列表,然后「shift + p」 以CPU 排序。查到 cpu 占用高的进程的 pid,然后看 CPU 主要消耗在用户态(us)还是内核态(sy)。用户态的函数跟踪用 ltrace , 内核态的函数跟踪用 strace 命令。以内核态为例:

1
2
sudo strace -p [pid] # 跟踪进程号为 pid 的进程的系统调用
sudo strace -cp [pid] # 上一个命令敲下来,可能跑了满屏的数据不便观察。-c选项汇总各个操作占用的时间