一、线上CPU飚高、死锁等排查基本步骤:
1、top
记录CPU使用率最高的JAVA进程PID
2、top -H -p PID
记录PID进程中CPU占用率最高的线程TID(界面上显示的仍是PID)
3、printf %x TID
将TID转为16进制XTID(因为jstack中线程号是16进制表示)
4、jstack PID或者jstack PID > jstack.txt
搜索XTID就可以找到线程当前执行的堆栈,找到代码所在行
出现死锁的话都在jstack.txt的最后,如果能用JVisualVM或者JConsole的话,在线程标签界面里就可以直接显示检测出的死锁
二、内存溢出
1、应用启动时添加如下参数:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/dump/
网友评论