Мониторинг производительности JVM

Смирнов Вячеслав, 2021

Исследователь артефактов НТ

Много JVM в Kubernetes Pod, Kafka, Elastic Search

100 JVM работающих друг с другом и базой

Сопоставляем входные сигналы метрикам

Метрики JVM — часть метрик

Метрики JVM — утилизация и сборка мусора

Утилизация влияет на стабильность

Утилизация влияет на стабильность

Проблемы стабильности сервисов

Несоотвествие заданных опций фактическим

Несоотвествие заданных опций фактическим

Потребление памяти больше, чем настроено (утечка?)

Настроено памяти больше, чем есть

Настроено подключений к БД больше, чем есть

Настроено подключений к БД меньше, чем нужно

Утечка файловых ресурсов, подключений, ...

Это покажет мониторинг JVM

Используемые JVM

Поддерживают JMX и JavaAgent от Jolokia и Prometheus

Поддерживает JMX, не поддерживает популярные Agent-ы

Популярные JavaAgent-ы

Варианты сбора метрик JVM

Утилита JMC - простой просмотр MBean

Из jolokia через telegraf (jolokia2) в InfluxDB

Для каждого MBean нужно правило jolokia2 🙁

Для каждого MBean нужно правило jolokia2 🙁

1. Выбираем MBean в JMC

MBean "Runtime", а точнее java.lang:type=Runtime

2. Выбираем аттрибут(ы) MBean в JMC

Обращаем внимание на тип аттрибутов

Выбрали аттрибут "Uptime"

3. Формируем правило jolokia2_agent (Telegraf)

1. Выбираем несколько MBean в JMC

java.lang:type=MemoryPool,name=G1 Survivor ...

java.lang:type=MemoryPool,name=*: маска в name

2. Выбираем аттрибут(ы) MBean в JMC

Выбрали CollectionUsage, PeakUsage, Usage

3. Формируем правило jolokia2_agent (Telegraf)

Для разных сервисов есть готовые конфиги 🙂

И готовые доски Grafana для Jolokia

Из jmx_exporter в Prometheus

Настройка jmx_exporter для Prometheus проще

Но гораздо сложнее 🙂 из-за RegExp-ов

Накладные расходы на сбор метрик JVM

Jolokia реже ищет MBean-ы

Визуализация метрик в Grafana

Берегите зрение

Сортируйте данные по убыванию

Так проще читать подсказки

Лучше собирать пореже, но хранить подольше

1. Мониторим не только JVM

2. Способ зависит от JVM и хранилища

3. Важно мониторить утечки

4. Метрики достаточно собирать раз в 30 сек

Мониторинг производительности JVM

owasp@ya.ru, t.me/qa_load