概括来说,分三步:
1,首先找到是哪个进程的CPU占有率飙到了100%。
2,根据进程号pid,定位到是哪个线程,找到对应线程的tid。
3,导出对应线程的dump日志文件,分析日志文件定位具体代码。
要解决这个问题,你应该具备以下技能:
1,linux的top命令。
2,jvm监控工具jps。
3,jvm监控工具jstack。
OK,接下来我们详细看一下如何定位问题。
一,linux的top命令如何使用
linux的top命令类似于windows下的任务管理器,我们可以使用linux命令来查看生产服务器的cpu使用情况。
常用命令如下:
top:每隔5秒显示所有进程的资源占用情况。
top -d 2:每隔2秒显示所有进程的资源占用情况。
top -c:每隔5秒显示所有进程的资源占用情况,并显示进程的命令行参数(默认只有进程名称)。
top -p 12345 -p 6789:每隔5秒显示12345和6789这2个进程的资源占用情况。
top -d 2 -c -p 123456:每隔2秒显示PID为12345的进程的资源占用情况,并显示该进程启动的命令行参数。
OK,我们可以使用下面的命令来查看某个线程下所有线程的CPU使用情况: