文档章节

一次OOM的排查过程

耀子
 耀子
发布于 2016/07/12 10:29
字数 369
阅读 463
收藏 4

「深度学习福利」大神带你进阶工程师,立即查看>>>

最近测试环境的Java应用经常挂掉,用jconsole查看堆内存使用情况,如下图:

堆内存使用量

在达到高峰的时候tomcat服务挂了,看图可以知道使用内存过大,于是开始追踪元凶。

  1. 加入启动参数 在catalina.sh加入-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/web/tomcat7/temp/oom.hprof 第一个参数是当发生OOM是生成heap dump文件,第二个参数是指定文件路径
  2. MAT工具分析 将生成的oom.hprof载入MAT进行分析(MAT工具下载地址:迅雷下载链接),如下图:

MAT分析图

工具怎么使用在此不讲了,参考官网wiki介绍。 点击图中Reports 下的 Leak Suspects,这里会列出了工具怀疑的内存泄露点,不过工具怀疑的也未必真的是存在的,但提供了一种参考。如下图:

怀疑的内存泄露点

图中怀疑内存泄漏点有四处,点击图中第一处的details查看详细情况,如下图:

内存泄露点1

从图中可以看到一个ArrayList有240097个对象引用没有释放掉,这才是导致OOM的原因,再查看报告中的Thread Stack,找到具体代码所在处,如下图:Thread Stack 经过排查,原来是程序代码一次性从数据库加载了全部的数据,没有分页导致的,修改完代码后一切正常了~~

耀子
粉丝 7
博文 29
码字总数 4672
作品 0
东城
程序员
私信 提问
加载中
请先登录后再评论。
记一次失败的Perl + Nginx + FastCGI 配置过程

这两天心血来潮,不知道为什么和 Perl + Nginx + FastCGI 配置 耗上了。但是失败了,记录如下: 1)安装Nginx 1.4.3 ,我的是WINDOWS 7 系统,修改配置文件如下: location ~ .(pl|cgi|perl)?...

通吃岛-低手哥
2013/10/27
1.7K
7
Android 快速开发框架--ThinkAndroid

ThinkAndroid简介 ThinkAndroid是一个免费的开源的、简易的、遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单、快速的进行Android应用程序的开发,包含Androidmvc、简易sqlite ...

white-cat
2013/05/05
6.8W
6
疯狂Spring Cloud连载(29)微服务跟踪概述

本文节选自《疯狂Spring Cloud微服务架构实战》 京东购买地址:https://item.jd.com/12256011.html 当当网购买地址:http://product.dangdang.com/25201393.html Spring Cloud教学视频:htt...

杨大仙的程序空间
2018/01/09
539
0
在Google使用Borg进行大规模集群的管理 5-6

使用效率 Borg的一个主要目的就是有效的利用Google的机器舰队,这可是一大笔财务投资:让效率提升几个百分点就能省下几百万美元。这一节讨论了和计算了一些Borg使用的技术和策略。 5.1 测度方...

难易
2015/10/14
1.7K
3
谈谈机会过程中的平均数律与机会变异

基本概念 下面列出的几个概念有助于理解本文所讨论的主题。 机会过程 书中没有给出机会过程的显式定义,我用搜索引擎也没有找到理想的回答: 但是书中提供了丰富的例子来说明机会过程,括号内...

Lee的白板报
2015/08/29
297
0

没有更多内容

加载失败,请刷新页面

加载更多

珍藏已久的 OS 学习网站拿出来分享给大家

这是程序员cxuan的第14篇原创文章 平常经常看推荐各种资源教程的,感觉有很多文章稂莠不齐,这次我来推荐点硬核的网站,包你有收获。 一般很少有人推荐操作系统的网站吧。。。。。。这几个网...

osc_uzrw5b73
16分钟前
10
0
为什么TikTok可以被禁,但绝对不能卖?

相关推荐: kafka集群扩容后的数据均衡 kafka数据存储目录间迁移 kafka分区数过多引发的弊端 戳原文,点在看! 本文分享自微信公众号 - 极客运维(hypernetworker)。 如有侵权,请联系 supp...

hyper-xu
昨天
0
0
IMX6ULL开发平台Linux-LED实验

在前面的章节中,我们学习了解了字符设备驱动,以及如何在设备树文件中添加设备信息,接下来就来看一下i.MX6UL终结者开发板的实际硬件是如何添加的。我们先以最简单的LED设备来看一下具体的注...

书白
17分钟前
6
0
树莓派k8s集群安装mysql

安装准备 树莓派k8s集群 root@pi4-master01:~# kubectl get nodes -o wideNAME           STATUS   ROLES    AGE     VERSION    INTERNAL-IP    EXTERNAL-IP   OS-IMAGE  ......

fastjrun
17分钟前
17
0
信息系统项目管理师

互联网+依托互联网信息技术实现互联网和传统产业的联合,以优化生产要素、更新业务体系、重构商业模式等途径来完成经济转型和升级。 开放系统的直连式存储(Direct-Attached Storage,简称DAS...

LitStone
17分钟前
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部