由于线上经常出现各种各样的性能问题,故记录下查看问题的步骤方便后期查阅
1)、在linux下使用TOP命令查看每个进程的情况,因为我们是java应用,只需要关注COMMAND是java的数据即可,如下图,CPU利用率最高的是30420这个进程(CPU利用率越高,性能越差,此处的利用率是当前机器所有核加在一起的CPU利用率)
TOP
2)、如果要查看每个核的CPU利用率,在此界面按1即可,可以看到Cpu7,说明是8核
3)、查看进程下各个线程的性能,可以看出,最耗费cpu的线程id是17657
TOP -Hp 30420
4)、dump最耗费cpu进程的堆栈信息
jstack pid > 文件地址
5)、我们用top出来的pid是十进制的。而dump下来的nid是十六进制的,用以下命令进行转换得44f9,然后再文件中搜索44f9,这样就找出了有问题的代码了
printf "%x\n" 线程id