java进程cpu占用高排查
java进程cpu占用高排查
java进程cpu占用高如何排查_停5s的博客-CSDN博客
步骤
java线程视角
1. ps aux 查看进程PID
1 |
ps aux |
2.使用top -H -p [java进程id],找到cpu占用较高的线程id
1 |
top -H -p pid |
3.计算java线程id的16进制值,因为后续用jstack看到的线程快照中,线程id为小写十六进制值
1 |
printf "%x" 1227 |
4.使用命令 jstack [java进程pid] | grep [线程id十六进制值] -A 30
1 |
jstack pid | grep threadId -A 30 |
GC视角
2.确认gc次数,使用命令 jstat -gc [java进程ID]
1 |
jstat -gc pid |
YGC,表示 Young GC,也就是Minor GC,发生在新生代中的GC
FGC,表示 Full GC,发生在老年代中的GC
S0C:第一个幸存区的大小S1C:第二个幸存区的大小S0U:第一个幸存区的使用大小S1U:第二个幸存区的使用大小EC:伊甸园区的大小EU:伊甸园区的使用大小OC:老年代大小OU:老年代使用大小MC:方法区大小MU:方法区使用大小CCSC:压缩类空间大小CCSU:压缩类空间使用大小YGCT:年轻代垃圾回收消耗时间FGCT:老年代垃圾回收消耗时间GCT:垃圾回收消耗总时间
如何计算gc频率,参考: https://blog.csdn.net/qq_18671415/article/details/104446568