您的位置:首页 > 其它

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

2017-04-29 17:11 260 查看
线上跑的几台server突然出现大量fgc,因为在fgc过程的stop the world太久。引起其他应用訪问该server上的接口大量超时。(发生超时的时间点和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,全然正常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐