1.通过top查看是哪个进程占用cpu最多
2.如果是java程序,则可以进一步使用
top -p [pid] -H
查看到具体的线程 然后使用
jstack -l -F [pid]
查询当前的java进程的线程状态、线程栈、是否有死锁等信息 这个时候需要注意下,top中的pid和jstack dump出来的线程对应关系。 把top中的pid转换成16进制。如1913经过16进制转换就是 jstack dump中java线程的nid(native thread id) 具体步骤如下:
1913由10进制转换成16进制
printf %x 1913
779
printf %x 1914
77a
printf %x 1915
77b
printf %x 1916
77c
得到的值查询时需要加上0x,表示16进制
在jstack dump出来的文件搜索当前id的线程(-C表示输出该行的上下行数)
cat jstack.dump | grep "nid=0x779" -C 10
3.如果是mysql引起的,则一般是慢查询导致,可进入mysql执行
show processlist;
查看,或者有开启慢查询的话可直接查看慢查询文件