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

Spring Boot应用:Prometheus查询每分钟Major GC次数及告警需求

Spring Boot 2+ 下Prometheus监控Major GC次数的查询方案

Spring Boot 2.x之后默认使用Micrometer作为指标收集库,旧的jvm_gc_collection_seconds_sum指标已被废弃,你可以用**jvm_gc_collection_counts**这个计数器指标来实现需求,它会按GC类型统计累计的GC次数。

核心PromQL查询

要计算每分钟Major GC的次数,需要用rate()函数统计1分钟内的GC次数增量,再乘以60转换成每分钟频次:

rate(jvm_gc_collection_counts{gc="G1 Old Generation"}[1m]) * 60

适配不同垃圾收集器

不同垃圾收集器的gc标签值不同,你需要根据自己使用的收集器调整:

  • G1收集器:G1 Old Generation(对应Major GC)
  • Parallel收集器:PS MarkSweep(对应Major GC)
  • CMS收集器:ConcurrentMarkSweep
  • ZGC/Shenandoah:直接用ZGC/Shenandoah(这类收集器不分Young/Major,若需监控全局GC次数可直接匹配)

如果要兼容多种收集器,可使用正则匹配:

rate(jvm_gc_collection_counts{gc=~"G1 Old Generation|PS MarkSweep|ConcurrentMarkSweep"}[1m]) * 60

告警规则示例

把查询语句放到Prometheus告警规则里,比如当每分钟Major GC次数超过5次时触发告警:

groups:
- name: spring-boot-gc-alerts
  rules:
  - alert: HighMajorGcRate
    expr: rate(jvm_gc_collection_counts{gc=~"G1 Old Generation|PS MarkSweep|ConcurrentMarkSweep"}[1m]) * 60 > 5
    for: 1m
    labels:
      severity: critical
    annotations:
      summary: "实例 {{ $labels.instance }} 出现高频率Major GC"
      description: "当前Major GC频次为 {{ $value | round }} 次/分钟,超过阈值5次/分钟"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:25:03