[原创]分析某系统内存泄漏原因_OpenStack, 云计算等杂项讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  OpenStack, 云计算等杂项讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 5575 | 回复: 0   主题: [原创]分析某系统内存泄漏原因        上一篇   下一篇 
linlin.yi
注册用户
等级:少校
经验:1024
发帖:75
精华:1
注册:2013-11-8
状态:离线
发送短消息息给linlin.yi 加好友    发送短消息息给linlin.yi 发消息
发表于: IP:您无权察看 2014-3-18 17:32:27 | [全部帖] [楼主帖] 楼主

1.问题描述

     经过工程师现场对该系统的观察,发现JVMheap在快速增长,经过一天的时间基本上4000M的内存基本上就用光了。垃圾回收的效果不是很理想。在系统中查看JVM的线程,发现线程的占用内存增长很快,基本上达到物理内存的62%也就是4.8G左右,就会宕机。

2.日志和heapdump分析

     1.heapdump分析

北京联动北方科技有限公司

北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司

     2.日志分析

    JVMDUMP006I 正在处理转储事件“systhrow”,详细信息“java/lang/OutOfMemoryError” - 请稍候。

     JVMDUMP006I 正在处理转储事件“systhrow”,详细信息“java/lang/OutOfMemoryError” - 请稍候。

     JVMDUMP006I 正在处理转储事件“systhrow”,详细信息“java/lang/OutOfMemoryError” - 请稍候。

     JVMDUMP006I 正在处理转储事件“systhrow”,详细信息“java/lang/OutOfMemoryError” - 请稍候。

     JVMDUMP006I 正在处理转储事件“systhrow”,详细信息“java/lang/OutOfMemoryError” - 请稍候。

     JVMDUMP006I 正在处理转储事件“systhrow”,详细信息“java/lang/OutOfMemoryError” - 请稍候。

     JVMDUMP006I 正在处理转储事件“systhrow”,详细信息“java/lang/OutOfMemoryError” - 请稍候

3.问题分析

在图中我们可以看到(打红标的)代码部分占用资源很大。而且使用的数量也是很多。没有在一定时间内释放,引起内存不断上涨,在日志中也能看到在符合引起我们系统宕机前抛出(OutOfMemoryError)。所以综合上述导致宕机原因是代码中存在内存泄漏导致内存使用率快速上涨。

4.解决方案

    这个很有可能是web应用代码中的漏洞。在经过开发人的确认后,证明确实是应用中使用了Hibernate 3.0的连接池dbcp连接池造成问题的根本原因。

    在开发人员修改代码以后,经过一天的观察JVMheap没有在快速上涨,而且系统运行稳定。证明在问题确实是Hibernate 3.0的连接池dbcp连接池引起的。(如图)

北京联动北方科技有限公司





赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论