性能文章>HeapDump性能社区Full GC异常问题排查实战案例精选合集>

HeapDump性能社区Full GC异常问题排查实战案例精选合集原创

https://a.perfma.net/img/3110416
8月前
302914

处理过线上问题的同学基本都遇到过系统突然运行缓慢,CPU 100%,以及 Full GC 次数过多的问题。这些问题最终导致的直观现象就是系统运行缓慢,并且有大量的报警。

本期小编集合了HeapDump性能社区内的4篇Full GC异常问题排查文章,通过几位作者记录的真实案例,提醒自己避免踩坑,顺便复习相关知识点。

1.一顿操作后,FGC频率降低到原来的1/400

作者:阿飞Javaer

https://heapdump.cn/article/2405044

作者通过一个多月的努力,将 FullGC 从 40 次/天优化到近 10 天才触发一次,而且 YoungGC 的时间也减少了一半以上。第一次优化,作者提升了新生代大小,将初始化堆内存设置为最大内存,运行了5天后,YoungGC减少了一半以上的次数,时间减少了400s,但是FullGC的平均次数增加了41次,没有达到预期效果,于是进行了第二次调优。第二次排查过程中发现了内存泄漏问题,原来是在某个条件下会查询表中所有未处理的指定数据,但是由于查询的时候where条件中少加了模块这个条件,导致查询出的数量达40多万条,解决此问题后,线上服务器运行完全正常了,Full GC频率也大大降低了。

亮点:作者在经历了为时一个多月的调优后,总结出了一些小tips,如发现FullGC频繁的时候优先调查内存泄漏问题,如果访问业务没有这么大量且没有攻击的问题的话可以往数据库方面调查等。十分具有参考价值。

2.FGC实战:如何用Idea揪出开源组件调用System.gc导致频繁FGC

作者:阿飞Javaer

https://heapdump.cn/article/366698

作者收到最近发布的一个服务频繁FGC的告警,首先查看GC日志,推测出是因为某些地方调用System.gc()触发的FGC,很顺利就找到了这个时候是调用了一个导出报表数据到Excel并下载的接口,作者便模拟该段代码重现了问题,然后借助IDEA强大的搜索功能成功定位,发现是在调用WritableWorkbook的close()方法时调用了System.gc(),从而触发了FGC。最后改造代码解决了问题。

亮点:作者碰到问题不轻视不主观臆断,每一步推断都有理有据。先是用最小量的代码完美重现了问题,然后另辟蹊径借助IDEA强大的搜索功能精准定位到了问题所在,改造代码解决了问题,最后还进行了压测,重复调用该段代码重复验证保证再无问题。心思缜密,值得学习。

3.FullGC实战:业务小姐姐查看图片时一直在转圈圈

作者:阿飞Javaer

https://heapdump.cn/article/249540

这是一篇理论与实战结合的好文,不仅分享了UseAdaptiveSizePolicy 参数的相关知识,还提供了清晰的定位思路:
(1)首先确定业务场景,到底业务是做什么的,做了哪些事情,可能拖慢程序的逻辑有哪些
(2)根据猜测可能出现问题的部分进行确认,排除
(3)结合日志信息及相关知识进行问题原因分析确认
(4)模拟复现确认问题出现的根因
(5)解决问题

4.Redis client链接池配置不当引起的频繁full gc

作者:朱纪兵

https://heapdump.cn/article/1679033

作者作为项目的ower,非常了解业务特征,在日常查看gc log时发现其不符合业务特征应该呈现的情况,立即使用工具进行排查,然后进行了优化。正因为对业务足够了解,专业知识过硬,所以在日常巡查中就能发现疑点并对其定位,防患于未然,十分值得学习。

请先登录,再评论

诚意满满小集合!

8月前

为你推荐

国内酒店:通过架构改进,我们计划优化掉300+台服务器
背景 线上问题回顾2019年8月某天,那时我刚入职还不到一个月,遇到一个特殊的线上问题:某报价应用个别机器连续FGC不停(准确的说是FGC几乎没任何效果),这些机器重启后不久继续开始不停的FGC。当时
第一次FullGC优化实战
关于FullGC,博主只是在一些书中或者博客中,看别人调优过,今天兴起,亲自在本地调了一把本地的项目:第一步:我首先打开了jvisualvm.exe,在Visual GC 里面发现了今天要讨论的重点:
一次线上JVM调优实践,FullGC40次/天到10天一次的优化过程
通过这一个多月的努力,将FullGC从40次/天优化到近10天才触发一次,而且YoungGC的时间也减少了一半以上,这么大的优化,有必要记录一下中间的调优过程。对于JVM垃圾回收,之前一直都是处于理论
线上服务的FGC问题排查,看这篇就够了!
这篇文章以一个Full GC频繁的线上案例作为引子,详细介绍GC的排查过程,另外会结合GC的运行原理给出一份实践指南。内容分成3个部分:从一次Full GC频繁的线上案例说起、GC的运行原理介绍、排查Full GC问题的实践指南
大量生成字节码导致元空间溢出问题排查
前几天生产环境出现了一个问题,gc日志里面某一个时间段出现了大量的Full GC,而且都是回收元空间内存失败了,最终导致了JVM停止运行,微服务中的某个服务发生了宕机。下面记录下排查该问题的过程。首先
记一次使用VJMap排查频繁YGC的经历
VJMap概述分代版的jmap(新生代,存活区,老生代),是排查内存缓慢泄露,老生代增长过快原因的利器。因为jmap -histo PID 打印的是整个Heap的对象统计信息,而为了定位上面的问题,我
HeapDump性能社区Full GC异常问题排查实战案例精选合集
处理过线上问题的同学基本都遇到过系统突然运行缓慢,CPU 100%,以及 Full GC 次数过多的问题。这些问题最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本期小编集合了HeapDump性
记一次异步日志设置不合理导致线程阻塞问题排查
作为PerfMa解决方案管理部门的技术专家,我在工作遇见过很多各种问题导致的性能问题,并参与了为客户的系统进行性能诊断调优的全过程。其中有一次,碰到了一个异步日志设置不合理导致线程阻塞的情况。用文字记