当小白遇到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,需修改代码以防止频繁加载新类。
  • 总结了排查过程中发现的问题及解决方案,强调了逐步排查的重要性。
➡️

继续阅读