|
问题分析: cpu使用率比较高一般归结于相关进程的线程使用率比较高,常出现的情况是大致可能是因为某个线程可能陷入死循环或者现场内有比较耗cpu的操作(memcpy 等等), 解决cpu高的问题就是定位程序可能陷入那个循环出不来了,好了下面具体上方法:
1 查看cpu比较高的进程的相关线程信息。
pidof 进程名称 (查看进程号)
top -H -p 进程号 (查看cpu比较高的线程)
2 使用 pstack命令 或者 gdb调试命令 查看堆栈信息。
进入到进程运行目录 使用 pstack 进程号 就可以查看到程序的堆栈信息,然后结合上一步查看到cpu比较高的线程号,找到cpu比较高的线程的堆栈信息,你就可以分析了。
另外一种方法是如果电脑没有pstack命令有gdb命令的话,可以使用gdb命令来查看现场堆栈信息,具体方法如下:
gdb
set logging file 1.txt (设置日志记录文件)
set logging on (开启日志记录)
attach pid (attach 到相关进程) thread apply all bt (查看进程堆栈信息) set logging off (关闭日志记录) quit (退出)
|