75. CPU 100%运行实战案例分析
Posted to.to
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了75. CPU 100%运行实战案例分析相关的知识,希望对你有一定的参考价值。
75. CPU 100%运行实战案例分析
生产库问题现象:
1),每次tomcat启动后第8天左右就会出现CPU 100%运行的情况;
2),jmap -heap pid命令查看老年代已使用99%;
jvm启动配置项:
-server -Xms2048m -Xmx2048m -Xmn700m -XX:SurvivorRatio=8 -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution -Xloggc:/usr/local/work/tomcat/logs/jvmgc.log
案发现场jmap堆内存分配截图:
案发时GC情况,每隔几秒执行一次full gc:
tomcat刚启动时:
一次GC前后Survivo占用内存大小分析,每次减少1M左右:
运行至最后:
发现每次年轻代垃圾回收后Survivo区会减少1500或2048K
通过分析应该是jvm自动调整了年轻代堆内存大小及Survivor比例,经过查找jvm是通过 -XX:+UseAdaptiveSizePolicy和 -XX:-UseAdaptiveSizePolicy来启用和禁用jvm自动调整堆内存大小的,通过jinfo -flag UseAdaptiveSizePolicy pid参数配置查看命令可以看到当前配置是打开的即(-XX:+UseAdaptiveSizePolicy),在jvm参数中设置为禁用(-XX:-UseAdaptiveSizePolicy)过一段时间后查看Survivo区域按照配置值进行分配未再随时间减少,问题解决后最终参数配置:
-server -Xms2048m -Xmx2048m -Xmn700m -XX:SurvivorRatio=8 -XX:PermSize=256m
-XX:MaxPermSize=256m -XX:+UseAdaptiveSizePolicy -XX:+PrintGCDetails
-XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution
-Xloggc:/usr/local/work/tomcat/logs/jvmgc.log
相关问题分析连接:
http://www.cnblogs.com/moonandstar08/p/5751175.html
以上是关于75. CPU 100%运行实战案例分析的主要内容,如果未能解决你的问题,请参考以下文章
记一次线上故障--HashMap在多线程条件下运行造成CPU 100%
记一次线上故障--HashMap在多线程条件下运行造成CPU 100%