并发环境下HashMap引起的full gc排查
作者:佐井 原文地址
现象
最近上线一个需求,完成需求的过程对代码进行了一次重构。应用发布后半个小时左右,发现一个机器报警,load过高。登陆机器看CPU使用情况,发现load已经正常,看下CPU使用情况,发现有一个核跑满,其他CPU使用率很低。大概一个小时后,其他机器陆续报警,发现同样的问题,紧急回滚应用。
应用运行在16G内存的虚机上,整个JVM11G内存,其中新生代3G,CMS gc,JDK7。
第一反应是JVM可能在进行full gc,因为只有一个线程跑满,其他线程被JVM暂停了。先去应用日志看下应用运行情况,果然日志已经没有任何输出。jstat -gcutil
查看JVM内存使用情况,发现Old区使用已经100%。