当小白遇到FullGC | 京东云技术团队
💡
原文中文,约3900字,阅读约需10分钟。
📝
内容提要
本文记录了一次排查FullGC导致的TP99过高过程,介绍了排查思路、线索和工具的使用。通过分析年轻代区域变化和关闭AdaptiveSizePolicy参数解决了FullGC问题。同时,通过修改逻辑代码防止频繁加载新类解决了FullGC问题。排查问题时要找直接原因,缩小排查范围。
🎯
关键要点
- 本文记录了排查FullGC导致TP99过高的过程,介绍了排查思路、线索和工具的使用。
- 通过分析年轻代区域变化和关闭AdaptiveSizePolicy参数解决了FullGC问题。
- 修改逻辑代码防止频繁加载新类也解决了FullGC问题。
- 排查问题时要找直接原因,缩小排查范围。
- 使用的工具包括JDOS容器智能监控、JDOS进程查询、SGM容器监控信息和SGM方法调用查询。
- 偶尔出现接口超时,经过观察发现问题与每天10点的业务高峰有关。
- 确认问题来源于FullGC,通过SGM工具定位到FullGC频繁发生。
- Full GC的触发条件包括老年代空间不足和方法区空间不足等。
- 分析发现老年代频繁达到90%,与FullGC时间一致。
- 通过JMAT分析内存快照,未发现大量大对象,排除大对象导致FullGC的可能。
- 关闭UseAdaptiveSizePolicy参数后,老年代和FullGC情况明显改善。
- 元空间的动态调整导致频繁FullGC,需修改代码以防止频繁加载新类。
- 总结了排查过程中发现的问题及解决方案,强调了逐步排查的重要性。
🏷️
标签
➡️