zoukankan      html  css  js  c++  java
  • 问题:虚拟机老生代垃圾回收频繁出现

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

  • 相关阅读:
    换个格式输出整数
    c++入门构造函数
    接口继承与实现
    spring mvc 之@requestmapping
    RabbitMQ
    Socket通信原理
    TCP三次握手与四次挥手
    WIN 10家庭版没有Hyper-V
    aop 切面demo
    JVM之旅------jvm内存模型
  • 原文地址:https://www.cnblogs.com/zno2/p/4607620.html
Copyright © 2011-2022 走看看