一、问题排查思路
系统页面出现卡顿、无响应,大致问题排查思路
首先检查网络问题。通过常用的ping或telnet命令进行检查
检查系统日志:前台通过F12进入调试,后台检查应用日志
检查系统应用资源使用情况,包括CPU、内存、IO、磁盘等
二、CPU过高排查步骤
本文将重点记录一次CPU飙高问题的追踪
查找进程PID:通过top命令可以查看到资源占用情况,并发现CPU飙高,在top命令下,按1会直接进入到多核CPU详情占用情况显示,如下所示
top
CPU占用高的线程TID:通过以上top命令可定位是否是JAVA应用引用的CPU占用高的问题(本图为16C)。如果确认是JAVA应用导致,我们最终需要找到是程序中哪些调用逻辑引起的,那我们接着需要继续跟踪是哪个线程引用起的,可用 以下命令找到应用线程信息,并找到占用CPU过高的线程ID
top -Hp PID
把TID转成十六进制:通过jstack命令查看时需要用到线程号的十六进制信息,所以我们需要用以下命令将线程ID转成十六进制
printf "%x\n" tid
查看线程堆栈信息
jstack pid|grep tid -A 30
根据以上信息可以具体分析程序逻辑所引用的CPU占用过高
三、jvm常用排查命令
查看当前运行的JAVA进程:jps -l
查看当前JVM配置信息:jinfo -flags pid
查看堆内存的设置及使用情况:jmap -heap pid
查看堆内存的存活的类信息,包括类名、对象数量、对象占用大小:jmap -histo :live pid
查看类加载的数量和空间占用:jstat -class pid
jps -l
jinfo -flags 26462
jmap -heap 26462
jstat -class 26462
jstat -gc 26462 2s 5
四、JVM参数调整
待续...