0

Springboot 应用程序中的 Prometheus 插件正在发送大量数据,我没有发现任何关于我从导出器获得的含义的亮点:

1) What does "jvm_gc_memory_allocated_bytes_total" mean?
2) What does "jvm_gc_memory_promoted_bytes_total" mean?

我需要的是 Java 垃圾收集器的实际内存使用情况,所以我期待一个值始终低于 2GB(最大内存大小),但目前为 8GB 并且仍在增加。

"jvm_gc_memory_allocated_bytes_total"

"jvm_gc_memory_promoted_bytes_total"

是从导出器提供的仅有的两个与 Garbe 收集器相关的变量。

4

1 回答 1

5

为了回答您的问题,Prometheus 展示格式的每个公开指标都提供了帮助文本:

# HELP jvm_gc_memory_allocated_bytes_total Incremented for an increase in the size of the young generation memory pool after one GC to before the next

# HELP jvm_gc_memory_promoted_bytes_total Count of positive increases in the size of the old generation memory pool before GC to after GC

这些指标累积年轻代中分配的字节和在垃圾收集中幸存下来的提升字节,因此它们被提升到老年代。(非常简化)

从您的问题来看,我认为您实际上不是在寻找“Java 垃圾收集器的内存使用情况”,而是实际上是在寻找 JVM 的托管内存使用情况。这些被管理的部分在第一层被分为“堆”和“非堆”(area标签),并且可以被id标签进一步向下钻取。

以下是您可能正在寻找的指标:

jvm_memory_used_bytes{area="heap|nonheap" id="<depends-on-gc-and-jvm>"}
jvm_memory_committed_bytes{area="heap|nonheap" id="<depends-on-gc-and-jvm>"}
jvm_memory_max_bytes{area="heap|nonheap" id="<depends-on-gc-and-jvm>"}

因此,如果您想了解当前使用的堆,则需要将堆面积指标与以下 PromQL 相加:

sum(jvm_memory_used_bytes{job="myjob", instance="myhost", area="heap"})
于 2019-01-23T21:53:48.813 回答