案例1: Dynatrace分析某财险承保系统内存泄漏问题

文档属性

此文档由东风微鸣编写。
未经许可,不得向个人或机构传阅或复制

修改记录

日期作者版本修改记录
2017/3/10东风微鸣V1.0创建文档
2017/10/29东风微鸣V1.1格式调整

审阅记录

审阅人职位

分发记录

拷贝No.姓名单位
1
2
3

参考文件

参考文件

一 内存泄漏情况说明

今天使用Dynatrace检查发现callCenter的应用存在内存泄漏的情况。具体如下:
在过去6H内,OLD区内存使用量在持续增长,最终达到99.98%。且大部分OLD区内存无法GC。同时因频繁GC,导致JVM “STOP THE WORLD”的时间越来越大。严重影响业务性能。

对业务性能的影响如下图所示:

折线图是不包含挂起(stop the world)的响应时间,柱状图是包含挂起的响应时间。可以看到对业务的响应时间造成了一定的影响。

二 内存泄漏分析

使用Dynatrace分析结果如下:

  1. 确实存在内存泄漏。(相关资料可以在Dynatrace的下列路径中查看分析结果)
  2. 泄漏的实例主要是ConcurrentHashMap”dubboLruCacheConcurrentHashMap也是dubboLRUcache调用的)如下图:
  3. 泄漏的根源如下:com.alibaba.dubbo.common.extension.ExtensionLoadercom.alibaba.dubbo.cache.support.lru.LruCacheFactory
  4. LRU类的相关细节如下:

三 总结

综上,dubbo的LRU相关的类导致了内存泄漏。

可能的原因有:LRU缓存的cache size大小有问题;expire时间有问题;或者是相关cache一直存在引用,导致无法GC。

还请优化相关代码,避免出现内存泄漏的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值