首页 > 代码库 > 大量数据更新导致fgc频繁引起jvm服务暂停。
大量数据更新导致fgc频繁引起jvm服务暂停。
线上跑的几台服务器突然出现大量fgc,由于在fgc过程的stop the world太久,引起其它应用访问该服务器上的接口大量超时。(发生超时的时间点和fgc时间点一致)
先进行初步的优化。
方案:修改CMSInitiatingOccupancyFraction=85这个调低到60,加快cms gc处理防止concurrent mode failure触发FGC,
减少CMSMaxAbortablePrecleanTime到500以缩短PreClean时间。
修改mn2560m为2048,让eden小于old。
但是修改后效果不大,于是分析FGC产生的根本原因:
突然发生频繁fgc的时间点为是有一个新上业务,该业务每五分钟dump一次词表,然后在本地jvm内解压,一次1G多的数据,然后下一次再更新词表时原词表摒弃。也就是每5分钟就会产生1g多的垃圾,而且是突发式的,不是说慢慢累积到1G,而是在新词表数据下载后瞬间抛弃原词表数据,这样大的垃圾回收确实需要一定处理时间。这样的业务如果靠 优化参数,起的作用杯水车薪 ,只能优化业务。后来了解5分钟更新一次本身就是配置错误,修改为正常频率后2小时产生一次fgc,完全正常。
但是修改后效果不大,于是分析FGC产生的根本原因:
突然发生频繁fgc的时间点为是有一个新上业务,该业务每五分钟dump一次词表,然后在本地jvm内解压,一次1G多的数据,然后下一次再更新词表时原词表摒弃。也就是每5分钟就会产生1g多的垃圾,而且是突发式的,不是说慢慢累积到1G,而是在新词表数据下载后瞬间抛弃原词表数据,这样大的垃圾回收确实需要一定处理时间。这样的业务如果靠 优化参数,起的作用杯水车薪 ,只能优化业务。后来了解5分钟更新一次本身就是配置错误,修改为正常频率后2小时产生一次fgc,完全正常。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。