13gb的heap dump 如何分析

一日,线上产品跑着的,收到业务监控报警:某台应用服务器的JVM Heap打满,且HTTP请求超时无响应。

收到告警后,立即切流量,并登陆问题服务器,利用jmap和jstack保存现场,然后恢复问题服务器的服务:

上传到公司的JVM分析工具ZProfiler上进行分析,Heap 得到如下结果:

由此,估计可以从这个线程入手,到 Thread Dump 中查看:

通过线程栈,最终发现出问题原因:业务线程在执行一个查询数据库的操作,数据返回量太大,内存爆了,解决方法自然是在代码中限制数据返回量了。

工具分析得一步到位,其中发生了什么?如果没有这个工具,手工可以分析出来吗?答案是肯定的。

利用JHat对Heap文件进行分析。

13g的内存分析,一般的开发机可能会OOM。问了下同事他们的工具是怎么做到的,回复是用了 ,好吧!

对于大内存文件,哪种分析工具比较适合?

jhat 至少要花费5倍于原始heap dump文件大小的内存,先排除掉;

mat 至少占用相同于heap dump文件大小的内存;

JProfiler 界面好,响应快,可以做本地、远程进程的Attach,以及分析内存快照文件;

Yourkit Java Profiler 相对于 JProfiler 更适合远程分析;

下面是JProfiler的应用截图

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180106G0OE5C00?refer=cp_1026

相关快讯

扫码关注云+社区