Linux线上故障排查

cup占用率高java

第一步:找到占用CPU太高的进程的pidlinux

使用top命令,而后按shift+p按照CPU排序工具

第二步:找到进程中消耗资源最高的线程的idspa

使用top -Hp [进程id]线程

第三步:将线程id转换为16进制(字母要小写)orm

使用echo 'obase=16;[线程id]' | bc或者printf "%x\n" [线程id]
【bc是linux的计算器命令】blog

第四步:查看线程状态信息排序

执行jstack [进程id] |grep -A 10 [线程id的16进制]”进程

第五步:导出堆栈异常信息内存

执行jstack [进程id] |grep -A 10 [线程id的16进制] > xxx.txt
下载至本地sz xxx.txt

内存占用较高:找到内存占用高的线程后,使用 jmap -dump:format=b,file=dumpfile.dat [pid]将内存信息down下来,pid为线程id,使用java自带工具

java visual vm:打开jdk/bin/jvisualvm,装入dump文件便可;

查看某进程号下的gc状况:jstat -gc 12538 5000

即会每5秒一次显示进程号为12538的java进成的GC状况,

字段说明: 显示内容说明以下(部分结果是经过其余其余参数显示的,暂不说明):          S0C:年轻代中第一个survivor(幸存区)的容量 (字节)           S1C:年轻代中第二个survivor(幸存区)的容量 (字节)           S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)           S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)           EC:年轻代中Eden(伊甸园)的容量 (字节)           EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)           OC:Old代的容量 (字节)           OU:Old代目前已使用空间 (字节)           PC:Perm(持久代)的容量 (字节)           PU:Perm(持久代)目前已使用空间 (字节)           YGC:从应用程序启动到采样时年轻代中gc次数           YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)           FGC:从应用程序启动到采样时old代(全gc)gc次数           FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)           GCT:从应用程序启动到采样时gc用的总时间(s)           NGCMN:年轻代(young)中初始化(最小)的大小 (字节)           NGCMX:年轻代(young)的最大容量 (字节)           NGC:年轻代(young)中当前的容量 (字节)           OGCMN:old代中初始化(最小)的大小 (字节)           OGCMX:old代的最大容量 (字节)           OGC:old代当前新生成的容量 (字节)           PGCMN:perm代中初始化(最小)的大小 (字节)           PGCMX:perm代的最大容量 (字节)             PGC:perm代当前新生成的容量 (字节)           S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比           S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比           E:年轻代中Eden(伊甸园)已使用的占当前容量百分比           O:old代已使用的占当前容量百分比           P:perm代已使用的占当前容量百分比           S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)           S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)           ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)           DSS:当前须要survivor(幸存区)的容量 (字节)(Eden区已满)           TT: 持有次数限制           MTT : 最大持有次数限制 

相关文章
相关标签/搜索