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

问题:虚拟机老生代垃圾回收频繁出现

时间:2016-08-06 08:35:48      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

case:

runbroker.sh JAVA_OPT 使用的是默认参数,broker运行过程中新生代垃圾回收次数较少,频繁出现老生代垃圾回收 cms gc ,并且老生代内存回收不掉。造成卡顿、消息发送失败。最终导致java heap 被占用完,broker 宕机。求教!

内存分析:

broker瘫痪之后使用jmap生成dump文件,使用MAT进行分析,发现HAService实例Retained 大量内存。

服务器模式是3m ,没有使用slave,但是从机刷盘的服务却占用大量内存,且不能被回收。问题显而易见。

技术分享

 

技术分享

解决方式一:启动slave

解决方式二:重构代码rocketmq_store.jar ,去除slave相关。

 经过进一步调查 HAService ,发现对应的日志文件store.log 中存在大量

HAService receive new connection, /172.16.50.105:xxxxx

并且启动大量的

WriteSocketService service started

并且没有被关闭,应该对应有WriteSocketService service end ,但是日志中只有很少一部分。

与Problem Suspect 1 一致!

解决方案:已查清 172.16.50.105 为监控机,频繁连接导致上述问题。停止监控broker服务器。

 

问题:虚拟机老生代垃圾回收频繁出现

标签:

原文地址:http://www.cnblogs.com/zno2/p/4607620.html

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