弹簧执行器度量标准“ jvm.memory.used”是什么度量单位?

问题描述 投票:0回答:1

我最近开始使用Spring Boot Actuator来提供预先存在的服务。我当前正在使用版本[<2.0.1.RELEASE。我设法启动并运行了Spring Actuator,并且可以看到/actuator/metrics页面并与度量一起运行。我可以在其各自的URL上使用诸如jvm.memory.used指标之类的指标,并使用各种标签进行深入研究。访问URL http://localhost:8080/actuator/metrics/jvm.memory.used时,得到以下输出:

{"name":"jvm.memory.used","measurements":[{"statistic":"VALUE","value":7.71444944E8}],"availableTags":[{"tag":"area","values":["heap","nonheap"]},{"tag":"id","values":["Compressed Class Space","PS Survivor Space","PS Old Gen","Metaspace","PS Eden Space","Code Cache"]}]}
因此,我可以看到我使用的JVM内存是“ 

7.71444944E8

”(或更简单地说,只是“ 771444944”)。但是,我很好奇,度量单位是什么,因为值本身是没有意义的。只是字节吗?可能是MB还是GB?我假设答案只是字节。这是有道理的,但到目前为止,我找不到任何支持这一点的根本原因。我曾尝试使用谷歌搜索,但无济于事。我咨询了似乎是canonical Spring Actuator doc的内容,但也没有找到任何答案。我也找到了a similar SO Q&A on the http.server.requests "TOTAL TIME" metric。该问题的可接受答案表明,它取决于我服务中的MeterRegistry实现。注意,我没有这样的实现。我现在只是在玩Web API。此外,该答案似乎是针对我未处理的时间单位的。任何帮助将不胜感激。
spring-boot-actuator
1个回答
0
投票
嗯,我想你是在引擎盖下使用千分尺。

微米是Spring Boot 2指标库。

即使您不使用任何存储来管理指标(例如Prometheus,DataDog等),您仍然拥有一些默认注册表。

现在,千分尺监视JVM并提供一些“开箱即用”的指标。 Here您可以找到有关它的信息。

它使用一个称为“粘合剂”的概念,您对JvmMemoryMetrics感兴趣。让我们看一下该活页夹的source-code

注意以下代码:

Gauge.builder("jvm.memory.used", memoryPoolBean, (mem) -> getUsageValue(mem, MemoryUsage::getUsed)) .tags(tagsWithId) .description("The amount of used memory") .baseUnit(BaseUnits.BYTES) .register(registry);

它基本上从JVM内存的JMX中获取每个Java进程可用的信息,并建立一个以字节为单位显示信息的计量器。

因此,您的情况及其在执行器中显示。

© www.soinside.com 2019 - 2024. All rights reserved.