记录一次线上频繁Full GC问题排查

问题描述

提示:这里描述项目中遇到的问题:

在某一天下午,公司钉钉群突然很多人反馈,系统很卡,响应很慢。于是我火速连接上服务器,发现服务正在疯狂执行GC,但是效果并不显著,堆空间也快占满了,满屏的 Full GC,此刻应该是一直处于STW(STOP THE WORLD),所以系统无响应。

在这里插入图片描述


问题排查

1.先别着急重启服务,先导出此时栈信息以及堆信息

先输入 `jps` 找出当前进程的pid
导出栈信息到statck.txt文件 `jstack -l  pid > stack.txt` 或者 `jstack -F  pid > stack.txt`
导出堆空间信息到filename.hprof文件 `jmap -dump:live,format=b,file=filename.hprof pid`

2.导出后,使用MAT分析工具(http://www.eclipse.org/mat/downloads.php)打开filename.hprof

勾选这个选项,生成分析报告

在这里插入图片描述

如果内存不够大话,会报错,那么去配置文件,修改最大内存大小即可

在这里插入图片描述

点击 Histogram

在这里插入图片描述

发现是HashMap占用的绝大部分的内存

在这里插入图片描述

点击树状引用

在这里插入图片描述
发现有一条查询SQL,猜测应该是一次查出来很多数据,同时放到map里去了
在这里插入图片描述

点击小齿轮

在这里插入图片描述

找到内存占用大的线程,逐步往下找,看看在执行什么操作,我们可以看到,执行了人事档案中的某一个方法,方法的行数,以及参数类型,我们都可以找到,最后定位到相应的代码即可。
在这里插入图片描述
方法详细参数
在这里插入图片描述

我们也可以在刚刚的树状列表里找到,这个方法的传参
在这里插入图片描述

原因分析:

提示:这里填写问题的分析:

最后定位到具体的代码,发现是一下子查询了太多的数据,导致的堆空间内存不足,最后修改为分页导出。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值