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

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

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


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


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


作者:阿飞Javaer


https://heapdump.cn/article/2...


作者通过一个多月的努力,将 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/3...


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


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


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


作者:阿飞Javaer


https://heapdump.cn/article/2...


这是一篇理论与实战结合的好文,不仅分享了UseAdaptiveSizePolicy 参数的相关知识,还提供了清晰的定位思路:


(1)首先确定业务场景,到底业务是做什么的,做了哪些事情,可能拖慢程序的逻辑有哪些

(2)根据猜测可能出现问题的部分进行确认,排除

(3)结合日志信息及相关知识进行问题原因分析确认

(4)模拟复现确认问题出现的根因

(5)解决问题


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


作者:朱纪兵


https://heapdump.cn/article/1...


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


相关文章
|
2月前
|
架构师 Java
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
67 0
|
15天前
|
监控 Java 调度
探秘Java虚拟机(JVM)性能调优:技术要点与实战策略
【6月更文挑战第30天】**探索JVM性能调优:**关注堆内存配置(Xms, Xmx, XX:NewRatio, XX:SurvivorRatio),选择适合的垃圾收集器(如Parallel, CMS, G1),利用jstat, jmap等工具诊断,解决Full GC问题,实战中结合MAT分析内存泄露。调优是平衡内存占用、延迟和吞吐量的艺术,借助VisualVM等工具提升系统在高负载下的稳定性与效率。
32 1
|
2月前
|
监控 算法 Java
JVM问题排查宝典
本文介绍了JVM问题排查与学习的经验,包括使用VisualVM监控本地JVM、通过GCViewer和gceasy分析GC日志、使用MAT分析OOM以及查询官方JVM参数。还提到了一个第三方网站HeapDump,提供简化版的JVM参数分析和生成服务,以快速生成适合特定环境的JVM配置。此外,推荐了几本深入学习JVM的书籍,并提供了进一步学习JVM问题的资源。
38 1
|
2月前
|
运维 监控 Java
【深入浅出JVM原理及调优】「搭建理论知识框架」全方位带你深度剖析Java线程转储分析的开发指南
学习JVM需要一定的编程经验和计算机基础知识,适用于从事Java开发、系统架构设计、性能优化、研究学习等领域的专业人士和技术爱好者。
69 5
【深入浅出JVM原理及调优】「搭建理论知识框架」全方位带你深度剖析Java线程转储分析的开发指南
|
XML 缓存 前端开发
【解决方案 十一】问题排查方法的思考
【解决方案 十一】问题排查方法的思考
89 0
|
存储 数据可视化 Java
深入理解JVM - 案例实战
上一节深入扩展了JVM工具jstat是如何使用了,但是从实际场景可以看出,更多情况是代码的问题,或者因为好奇害死猫乱设置参数导致线上各种报错或者频繁的卡死,这里还是再次强调一句不要使用System.gc()这个臭名昭著的方法,最好是JVM禁止此方法的运行。
94 0
|
缓存 Oracle Java
53.【面试宝典】面试宝典-jvm参数配置实战-gc日志解析
【面试宝典】面试宝典-jvm参数配置实战-gc日志解析
53.【面试宝典】面试宝典-jvm参数配置实战-gc日志解析
|
消息中间件 监控 算法
JVM技术之旅-线上分析排查问题
JVM技术之旅-线上分析排查问题
281 0
JVM技术之旅-线上分析排查问题
|
存储 缓存 安全
收集字节跳动---Java提前批面试题(上)
收集字节跳动---Java提前批面试题(上)
92 0
收集字节跳动---Java提前批面试题(上)
|
存储 消息中间件 缓存
收集字节跳动---Java提前批面试题(下)
收集字节跳动---Java提前批面试题(下)
202 0
收集字节跳动---Java提前批面试题(下)