Прометей, как получить реальное использование памяти Java Garbage Collector? - PullRequest
0 голосов
/ 23 января 2019

Плагин Prometheus в приложении Springboot отправляет тонны данных, я не вижу никакого смысла в том, что я получаю от экспортера:

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

Что мне нужно, так это фактическое использование памяти Java Garbage Collector, поэтому я ожидаю, что значение всегда будет ниже 2 ГБ (максимальный объем памяти), но на данный момент составляет 8 ГБ и продолжает увеличиваться.

"jvm_gc_memory_allocated_bytes_total"

и

"jvm_gc_memory_promoted_bytes_total"

являются единственными двумя переменными, связанными с Garbe Collector, поставляемыми экспортером.

1 Ответ

0 голосов
/ 24 января 2019

Чтобы ответить на ваши вопросы, есть справочный текст, предоставляемый с каждой выставленной метрикой в ​​формате экспозиции Прометея:

# 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 Garbage Collector», а фактически использование управляемой памяти 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"})
...