经常遇到这种情况,早晨起来,打开电脑,习惯性打开top看下机器状态,发现内存和cpu负载特别高,而且Command栏赫然写着“Python3”!
这就让人摸不着头脑了,如何定位是什么程序呢?下面给展示一般的操作思路:
- 拿到该进程号pid
- 通过ps查看应用:ps aux|grep pid
ipcc 281020 39.5 2.6 1025560 425540 ? Sl 01:18 341:29 /usr/bin/python ./xxx.py
- 查看进程中 线程的CPU占用情况:top -H -p pid
- 找到占用cpu资源最多的线程,线程号为164130
到此为止,其实一般的应用程序问题就一目了然了,大多数时候可能是应用本身的问题,关掉重启大法就行,如果是排查开发过程中的中间件问题,还需要继续跟进
- 跟踪该线程的执行栈,查看命令的执行情况:watch pstack 164130 (如果提示pstack 无可执行命令时,使用apt-get install pstack即可)
- 跟踪函数的调用,进一步可以通过strace命令进行验证:strace -f -p 164130,可以清晰的看到函数的调用