线上内存溢出问题排查<实践篇>
来源:互联网 发布:家装电路设计软件 编辑:程序博客网 时间:2024/04/30 21:37
【实践是检验真理的唯一标准】
一、概述
二、线上准备数据之前写过 《性能的一些常用的命令与注意点》、《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进去,发现
展开后:发现是此线程持有的一些数据:再从数据中寻找 是什么原因引起的。(一般都能查到问题的)
可以看到整个对象的具体数值:
四、最后
分析好原因后,该干嘛就干嘛吧! 基本是代码写的不好、一些接口没有做幂等控制的。
【对于线上内存溢出hold的问题,您有啥好的解决方案吗?请留言!您的评论是我写博文的最大动力。】
- 线上内存溢出问题排查<实践篇>
- 线上PHP问题排查思路与实践
- 线上PHP问题排查思路与实践
- java内存溢出问题排查
- 【实践】内存问题排查实践
- 线上服务器脚本内存泄漏问题排查
- 如何排查java内存溢出问题
- jvm 内存溢出问题排查方法
- 线上问题排查命令----JVM篇
- 线上问题排查命令----Shell篇
- 线上问题排查命令----JVM篇
- 排查线上问题
- 线上问题排查
- JVM线上问题排查
- 线上应用问题排查
- 线上问题排查
- 内存溢出排查
- 内存溢出排查步骤:
- ffmpeg/ffplay vc6 源码剖析
- 汉字转十六进制
- Android启动分析
- 简历(职场中)
- Android 在一个应用中如何启动另外一个已安装的应用!!!
- 线上内存溢出问题排查<实践篇>
- Android RIL学习
- 键值编码
- Top 150 Questions - 1.7
- 错误: svn: OPTIONS of 'xxx': 200 OK
- vc6.0 调试中的User breakpoint called from code at 0x ....
- nginx geo 模块实现全局负载均衡
- web 技术教程
- 四步轻松实现用Visio画UML类图