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


相关文章
|
7月前
|
Arthas 监控 Java
(十一)JVM成神路之性能调优篇:GC调优、Arthas工具详解及各场景下线上最佳配置推荐
“在当前的互联网开发模式下,系统访问量日涨、并发暴增、线上瓶颈等各种性能问题纷涌而至,性能优化成为了现时代开发过程中炙手可热的名词,无论是在开发、面试过程中,性能优化都是一个常谈常新的话题”。
608 3
|
3月前
|
Arthas 监控 Java
JVM进阶调优系列(9)大厂面试官:内存溢出几种?能否现场演示一下?| 面试就那点事
本文介绍了JVM内存溢出(OOM)的四种类型:堆内存、栈内存、元数据区和直接内存溢出。每种类型通过示例代码演示了如何触发OOM,并分析了其原因。文章还提供了如何使用JVM命令工具(如jmap、jhat、GCeasy、Arthas等)分析和定位内存溢出问题的方法。最后,强调了合理设置JVM参数和及时回收内存的重要性。
|
6月前
|
缓存 监控 算法
吃透 JVM 诊断方法与工具使用
【8月更文挑战第4天】深入了解并掌握JVM诊断需把握几大要点:1) 熟悉JVM内存模型,如堆、栈及方法区;2) 掌握垃圾回收机制与算法;3) 运用工具如`jps`(查看Java进程)、`jstat`(监控运行状态)、`jmap`(生成堆快照)、`jhat`(分析堆快照)、`jstack`(检查线程栈); 4) 利用专业工具如Eclipse Memory Analyzer分析堆转储文件查找内存泄漏; 5) 动态监控与调整JVM参数; 6) 结合日志分析性能瓶颈。通过实战案例加深理解,有效应对JVM性能问题。
|
9月前
|
监控 算法 Java
JVM问题排查宝典
本文介绍了JVM问题排查与学习的经验,包括使用VisualVM监控本地JVM、通过GCViewer和gceasy分析GC日志、使用MAT分析OOM以及查询官方JVM参数。还提到了一个第三方网站HeapDump,提供简化版的JVM参数分析和生成服务,以快速生成适合特定环境的JVM配置。此外,推荐了几本深入学习JVM的书籍,并提供了进一步学习JVM问题的资源。
99 1
|
9月前
|
Arthas Prometheus 监控
JVM工作原理与实战(二十九):监控内存泄漏的工具
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了解决内存溢出的步骤、Top命令、VisualVM、Arthas、Prometheus + Grafana等内容。
520 0
|
9月前
|
运维 监控 Java
【深入浅出JVM原理及调优】「搭建理论知识框架」全方位带你深度剖析Java线程转储分析的开发指南
学习JVM需要一定的编程经验和计算机基础知识,适用于从事Java开发、系统架构设计、性能优化、研究学习等领域的专业人士和技术爱好者。
123 5
【深入浅出JVM原理及调优】「搭建理论知识框架」全方位带你深度剖析Java线程转储分析的开发指南
|
9月前
|
监控 Java 数据库连接
开源项目datavines内存泄漏问题分析
开源项目datavines内存泄漏问题分析
141 0
|
存储 数据可视化 Java
深入理解JVM - 案例实战
上一节深入扩展了JVM工具jstat是如何使用了,但是从实际场景可以看出,更多情况是代码的问题,或者因为好奇害死猫乱设置参数导致线上各种报错或者频繁的卡死,这里还是再次强调一句不要使用System.gc()这个臭名昭著的方法,最好是JVM禁止此方法的运行。
114 0
|
Arthas 监控 Java
【JVM性能分析】「Arthas技术专题」安装入门及基础指令介绍
【JVM性能分析】「Arthas技术专题」安装入门及基础指令介绍
266 0
【JVM性能分析】「Arthas技术专题」安装入门及基础指令介绍
|
消息中间件 监控 算法
JVM技术之旅-线上分析排查问题
JVM技术之旅-线上分析排查问题
311 0
JVM技术之旅-线上分析排查问题

相关实验场景

更多