mat分析线上heap dump文件

mat分析线上heap dump文件,第1张

mat分析线上heap dump文件 mat分析线上heap dump文件 1. 发现问题
(1) 某次线上服务3台机器全部宕机,查看日志及监控发现,oom异常
(2) 赶紧登录服务器,做了一次线上heap dump  *** 作,保留快照文件,以便后续分析问题
	① 进入docker容器,docker exec -it xxxx sh
	② 执行jps,查看服务进程 jps, 
	③ 开始做dump文件: jmap -dump:format=b,file=heap.2021-12-28.hprof  
	④ 至此,线上快照完毕,导出到本地机器,准备做分析使用
2. 排查过程
1) 我采用的是memory analyzer 分析工具,功能很强大.
	① mat下载工具: http://www.eclipse.org/downloads/download.php?file=/mat/1.12.0/rcp/MemoryAnalyzer-1.12.0.20210602-macosx.cocoa.x86_64.dmg
	② 我用的是高版本,需要jdk11及以上,顺便我将电脑的jdk1.8 升级到了11,
	③ 工具准备就绪,可以开始分析了. 
2)  打开mat分析工具
	①  菜单栏选择,File -> open File  选择要分析的hprof文件.
	②  打开分析文件的时候,一定要选择上leak suspects report 功能,这个功能有助于协助分析问题点所在,对我们是个很好的提示


③ 可以看到报告,显示 org.apache.coyote.http11.Http11OutputBuffer 占用了大量的内存空间,猜测是不这个类做了啥 *** 作?

  1. 点击dominator tree 查看任务依赖树,发现都是一些接口调用记录.
  2. 发现单个对象的大小都为10M,猜测?是不应用哪个地方加了配置,给http请求设置了内存预分配
  3. 百度,发现 跟application.yml 配置中 max-http-header-size: 10000000 设置有关,果断去掉此配置,重新弄部署上线,运行正常,监控应用老年代内存一直处于正常状态.
3. mat工具常用功能


1) 查看对象实例数及内存容量占比.
2) 查看依赖树.
3) 查看对象堆栈信息.

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5686886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存