首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

线上内存溢出有关问题排查<实践篇> 转

2013-08-13 
线上内存溢出问题排查实践篇转线上内存溢出问题排查实践篇? 转一、概述之前写过 《性能的一些常用的命令

线上内存溢出问题排查<实践篇> 转
线上内存溢出问题排查<实践篇>? 转一、概述

之前写过 《性能的一些常用的命令与注意点》、《java jvm内存结构(回顾)》、?《

JVM内存回收机制及回收器-一目了然》?等篇文章,今天写下实践吧,比较简单。?也正好前几天出现一个内存的问题。

二、线上准备数据

线上服务器跑得好好,突然服务不可用了,怎么办?
1、登陆服务器,立马从LB拉下。
2、快速jps,jstat -gcutil 12345看下。
3、如果是内存溢出再down(jmap -dump:live,format=b,file=heap.bin 32471)出堆分析,同时打出线程栈。
4、重启。
5、拉上f5。
当然事先配置一些参数,让系统出现内存溢出的时候自动打出堆栈(-XX:+HeapDumpOnOutOfMemoryError),也是非常好的办法。?
?????如果是整个集群出现问题,那把别的机器全部重启,留一台分析。如果实在不行,那就只能回滚代码了。
【ps:如果是内存出现问题,一般很少直接挂掉,回收线程还在做最后的挣扎,cpu利用率也非常高。整个load也上去了。整个jvm就会挂在哪里,一动不动了。 估计也不会自动打出堆栈了,还得手工上弄啊。】

三、线下分析
我一般使用mat(http://www.eclipse.org/mat/)(mat的堆开大点,默认的会内存溢出的)分析堆:此是此次故障down下来的 用mat分析的 图形。
?线上内存溢出有关问题排查<实践篇>  转
?????再从 Dominator tree进去,发现
线上内存溢出有关问题排查<实践篇>  转
?
线上内存溢出有关问题排查<实践篇>  转
?????展开后:发现是此线程持有的一些数据:再从数据中寻找 是什么原因引起的。(一般都能查到问题的)
线上内存溢出有关问题排查<实践篇>  转
线上内存溢出有关问题排查<实践篇>  转可以看到整个对象的具体数值:
线上内存溢出有关问题排查<实践篇>  转
?四、最后? ??分析好原因后,该干嘛就干嘛吧! 基本是代码写的不好、一些接口没有做幂等控制的。

热点排行