码迷,mamicode.com
首页 > 其他好文 > 详细

依赖包中System.gc()导致Full GC

时间:2019-09-18 14:24:35      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:查看   老年   信息   system   需要   团队   img   特定   扯淡   

1、问题发现

??????Prometheus报警live服务的某个节点Old GC过多,需要排查。

2、问题分析

技术图片
?????? 查看Prometheus,发现这个节点在11点18分到11点28分,仅仅10分钟内,进行了5次Full GC,根据经验(这样说可能有点扯淡),应该是某个特定接口导致的。

3、使用GCViewer分析GC日志

技术图片
??????从图中可以看到,在发生Full GC的时间段内,老年代的使用不到200M,老年代的总大小为760多M。很显然,这个不是由于内存不够导致的。

4、查看GC原因

技术图片
?????? 可以看到5次GC的原因都是System.gc(),说明代码中调用了方法System.gc()(当然可能是业务同学自己写的代码,也可能是依赖包中的)。

5、在ELK中查看该服务在该时间段内的调用情况

技术图片
?????? ELK日志显示可能是导出Excel导致(历史原因:严格来讲,线上服务不应该提供这种导出功能,这部分功能正在慢慢向大数据团队迁移,但是还没迁移完)

6、查看代码

??????根据日志信息查看代码发现确实是导出Excel操作导致,依赖包中的jxl.read.biff.WorkbookParser类中,强制使用了方法System.gc()进行GC。

依赖包中System.gc()导致Full GC

标签:查看   老年   信息   system   需要   团队   img   特定   扯淡   

原文地址:https://www.cnblogs.com/cuizhiquan/p/11537678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!