排查CPU超100%的方法和解释
2017-03-31 00:00
239 查看
摘要: 排查CPU超100%的方法和解释
当CPU超过100% 或者接近100% 时有必要对线程进行排查
1, top 找出那条进程CPU比较高 PID
2, top -p PID -H 打印 该PID进程下哪条线程的CPU占用比较高 ,tid
3, printf "%x\n" tid 将该id进行16进制转换 id eg:4a05
4, jstack PID |grep id -A 30 打印线程的堆栈信息
在此就可以查看造成CPU异常是由那条线程造成的了。
本人异常是由于报java.lang.OutOfMemoryError: PermGen space
查出来的异常如下
是由GC造成的,接着采用jstat -gc PID 5000 打印GC情况发现 PC和PU(持久代的容量和已使用的字节已经一样大小了),这正是造成exception 的原因
加大持久代的大小即可
-XX:PermSize=64M -XX:MaxPermSize=128M
这里的两个值尽量相等,可避免JVm自己进行调整,避免性能浪费
----------------------------------万能的分隔符-------------------------------
纯属愚见,欢迎指正,共同进步
jstat -gc PID 5000 隔5s打印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 : 最大持有次数限制
当CPU超过100% 或者接近100% 时有必要对线程进行排查
1, top 找出那条进程CPU比较高 PID
2, top -p PID -H 打印 该PID进程下哪条线程的CPU占用比较高 ,tid
3, printf "%x\n" tid 将该id进行16进制转换 id eg:4a05
4, jstack PID |grep id -A 30 打印线程的堆栈信息
在此就可以查看造成CPU异常是由那条线程造成的了。
本人异常是由于报java.lang.OutOfMemoryError: PermGen space
查出来的异常如下
"GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f8c7c016000 nid=0x4a05 runnable "GC task thread#1 (ParallelGC)" prio=10 tid=0x00007f8c7c017800 nid=0x4a06 runnable "VM Periodic Task Thread" prio=10 tid=0x00007f8c7c12b800 nid=0x4a0e waiting on condition
是由GC造成的,接着采用jstat -gc PID 5000 打印GC情况发现 PC和PU(持久代的容量和已使用的字节已经一样大小了),这正是造成exception 的原因
加大持久代的大小即可
-XX:PermSize=64M -XX:MaxPermSize=128M
这里的两个值尽量相等,可避免JVm自己进行调整,避免性能浪费
----------------------------------万能的分隔符-------------------------------
纯属愚见,欢迎指正,共同进步
jstat -gc PID 5000 隔5s打印GC的情况
jstat -gc 18947 5000 S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 64.0 64.0 0.0 0.0 349376.0 0.0 699072.0 63239.7 83968.0 83967.9 15426 88.037 15382 3364.663 3452.700 64.0 64.0 0.0 0.0 349376.0 0.0 699072.0 63239.7 83968.0 83967.9 15448 88.130 15404 3369.525 3457.654 64.0 64.0 0.0 0.0 349376.0 0.0 699072.0 63239.7 83968.0 83967.9 15470 88.239 15426 3374.401 3462.640 64.0 64.0 0.0 0.0 349376.0 0.0 699072.0 63239.7 83968.0 83967.9 15492 88.333 15448 3379.277 3467.610 64.0 64.0 0.0 0.0 349376.0 0.0 699072.0 63239.7 83968.0 83967.9 15514 88.426 15470 3384.160 3472.586
附参数信息:
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 : 最大持有次数限制
相关文章推荐
- 排查CPU超100%的方法和解释
- 使用Windbg简单排查线程 CPU 100%的方法
- 使用Windbg简单排查线程 CPU 100%的方法
- 使用Windbg简单排查线程 CPU 100%的方法
- 使用Windbg简单排查线程 CPU 100%的方法
- svchost.exe占用CPU 100%的解决方法
- svchost.exe占用CPU 100%的解决方法
- svchost.exe占CPU 100%的解决方法
- Win XP中CPU占用率100%原因及解决方法
- Win XP中CPU占用率100%原因及解决方法
- XP中CPU占用率100%原因及解决方法
- svchost.exe占用CPU 100%的解决方法
- IIS中死循环的解决方法 dllhost占用大量内存,cpu占用100%
- svchost.exe占用CPU 100%的解决方法
- CPU占用100% 解决方法 (小莫)
- 解决winXP中CPU占用率100%的方法
- IE占CPU资源 100% 解决方法
- (转载)svchost.exe占CPU 100%的解决方法
- [组图教程]:8大方法!解决CPU资源占用100%[ZT]
- Win XP中CPU占用率100%原因及解决方法