You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何监控Java 8 Spring服务GC并通过Prometheus在Grafana展示

Spring Boot Java 8 应用GC异常监控核心指标

以下是你搭建Grafana监控大盘、配置健康红绿灯需要重点关注的指标,全部可以通过Spring Boot Actuator暴露的Micrometer指标直接获取:

核心GC运行指标

  • Minor GC(新生代GC)
    • 单位时间触发次数:对应指标jvm.gc.pause,筛选action="minor"标签,统计1分钟内的触发量,正常区间为<5次/分钟,超过10次/分钟属于异常
    • 暂停耗时百分位:取jvm.gc.pause的p95、p99值,正常应该低于100ms,超过500ms属于严重异常
  • Full GC(老年代GC)
    • 单位时间触发次数:对应指标jvm.gc.pause,筛选action="major"标签,统计1小时内的触发量,正常区间为0次/小时,超过2次/小时属于严重异常
    • 暂停耗时百分位:取p95、p99值,Java 8默认Parallel GC场景下正常低于1s,CMS场景下正常低于2s,超过阈值直接判定异常
  • GC耗时占比:统计1分钟内所有GC暂停的总耗时,占总运行时间的比例,<1%为正常,1%~3%为警告,>3%为严重异常

辅助根因定位的内存池指标

通过内存占用趋势可以提前预判GC风险、定位异常原因:

  • 新生代内存:对应指标jvm.memory.used,分别筛选id="Eden Space"、id="Survivor Space"标签
    • Eden区未满就频繁触发Minor GC,说明存在内存分配异常
    • Survivor区占用率长期超过50%不降,说明大量短生命周期对象被提前晋升到老年代,会增加Full GC风险
  • 老年代内存:对应指标jvm.memory.used,筛选id="Tenured Gen"标签
    • 每次Full GC完成后,老年代剩余占用量持续上涨,说明存在内存泄漏
    • 老年代占用率<70%为正常,70%~85%为警告,>85%为严重异常,大概率会很快触发Full GC

健康红绿灯判定规则

你可以直接基于上述指标阈值配置三色状态:

  • 绿灯(正常):满足所有条件:1分钟内Minor GC次数<5、p99耗时<100ms;1小时内无Full GC;老年代占用率<70%;GC耗时占比<1%
  • 黄灯(警告):满足任一条件:1分钟内Minor GC次数510、p99耗时100500ms;1小时内Full GC次数12次;老年代占用率70%85%;GC耗时占比1%~3%
  • 红灯(异常):满足任一条件:1分钟内Minor GC次数>10、p99耗时>500ms;1小时内Full GC次数>2次;老年代占用率>85%;GC耗时占比>3%

内容的提问来源于stack exchange,提问作者Robbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:06:03