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

大量数据更新导致fgc频繁引起jvm服务暂停。

时间:2014-07-12 21:26:45      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:数据   cti   io   div   时间   服务器   

线上跑的几台服务器突然出现大量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频繁引起jvm服务暂停。,布布扣,bubuko.com

大量数据更新导致fgc频繁引起jvm服务暂停。

标签:数据   cti   io   div   时间   服务器   

原文地址:http://blog.csdn.net/axman/article/details/37692037

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