zno2

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

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服务器。

 

posted on 2016-08-06 08:01  zno2  阅读(436)  评论(0编辑  收藏  举报

导航