Какой единицей измерения является пружинный привод Metri c "jvm.memory.used"? - PullRequest
0 голосов
/ 22 февраля 2020

Я недавно начал использовать Spring Boot Actuator для уже существующей службы. В настоящее время я использую версию 2.0.1.RELEASE . Мне удалось запустить Spring Actuator и запустить страницу /actuator/metrics с метриками. Я могу получить доступ к таким метрикам, как jvm.memory.used metri c по соответствующему URL-адресу с различными тегами для опций детализации. Когда я получаю доступ к 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 "). Однако мне любопытно, что такое единица измерения, поскольку само значение не имеет смысла. Это только байты? Может быть, это МБ или ГБ? Я предполагаю, что ответ только байты. Это имело бы смысл, но я не могу найти основную причину, чтобы поддержать это до сих пор.

Я пробовал поискать в Google, но безрезультатно. Я проконсультировался с каноническим пружинным приводом 1025 *, но и там не смог найти никаких ответов. Я также нашел аналогичные вопросы и ответы SO * в http.server.requests"TOTAL TIME" metri c. В ответе на этот вопрос указано, что это зависит от реализации MeterRegistry в моем сервисе. Обратите внимание, что у меня нет такой реализации. Сейчас я просто играю с веб-API. Более того, этот ответ, похоже, был указан c единицам времени, с которыми я не имею дело. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 23 февраля 2020

Хорошо, я предполагаю, что вы используете микрометр под капотом.

Микрометр - это библиотека метрик с пружинной загрузкой 2.

Даже если вы не используете магазин для управления метриками ( подобно Prometheus, DataDog и т. д. c.) у вас по-прежнему есть реестр по умолчанию.

Теперь микрометр отслеживает JVM и предоставляет некоторые готовые метрики. Здесь вы можете найти информацию об этом.

Он использует концепцию, называемую "связующие", и вы заинтересованы в JvmMemoryMetrics. Давайте взглянем на исходный код этого переплета.

Обратите внимание на следующий код:


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

В основном он получает информацию из JMX о памяти JVM, которая доступно для каждого java процесса и создает датчик, который отображает информацию в байтах.

Так что ваш случай и его показано в приводе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...