一、事故发生
上周五下午运营人员反馈,笔者所负责的后台系统从14点以后就卡卡的,虽然页面能够正常加载,但是一直处于数据加载中,数据也提交不了,怀疑笔者的系统有BUG,当听到运营人员的反馈我的第一反应是这不可能啊,这么简单的一个后台系统,还能出事故?
二、处理流程
1. 摘除其中一台服务器用于保留现场,其他服务器先重启,保证系统可用。
2. 下载GC日志,系统dump文件用于分析
三、GC log分析
系统启动参数,JVM内存分配:-Xmx4096m -Xms4096m -Xmn2560m
观察日志可知系统每隔40S发生一次Full GC,耗时200毫秒,回收以后系统老年代占用也不大,才15M,但是新生代回收完还有2个G。
有点不可思议,竟然不是老年代塞满了数据,而是新生代塞满了数据。
初步推测是新生代数据要晋升到老年代,结果放不进去而引起的Full GC。
四、使用EclipseMAT对Dump文件进行分析