- 首先我们通过top查看user cpu使用量,已经达到80%,但是看不到哪个进程占用
- 然后通过pidstat 查看cpu进程,也没有找到占用cpu使用量高的进程
- 然后我通过vmstat 查看r列活跃进程数,发现已经有超过CPU个数的活跃进程占用CPU
- 通过ps aux | grep R 查看活跃进程,执行多次可以发现多个“短时进程”启动停止
- perf record -g,perf report 抓CPU性能事件,发现很多相同“短时进程”每个进程占用CPU不对,但是进程比较多
- pstree | grep "短时进程名称" 来分析是哪个进程制造的“短时进程”,需要对这个进程进行代码分析
- 可以定位为“短时进程”进程过多导致user CPU使用率升高,因为进程启动结束时间较短,所以top,pidstat不容易发现
- 假如抓取“短时进程”可以使用execsnoop工具,它通过ftrace实时监控进程的exec()行为,并输出“短时进程”的基本信息,PID,父进程PID
造成“短时进程”原因:
- 进程一直在崩溃重启,比如:一个进程因配置问题等错误启动失败,但是被监控系统(supervisor)自动重启
- 这些进程都是“短时程序”,也就是在其它应用内部调用exec执行外部命令,这些命令一般执行时间很多,但是通过top,pidstat都很难发现
网友评论