Вопрос № 1: «Как я могу узнать максимальное число, до которого оно может добраться?»A: Без resources
, настроенного в развертывании, модуль будет иметь класс QoS BestEffort и может использовать столько памяти, сколько доступно на узле, на котором он работает.См. Также мой ответ на этот вопрос: Как узнать, сколько оперативной памяти имеет мой модуль Kubernetes?
Всегда полезно, по крайней мере, указывать min (-Xms
) и max (-Xmx
) куча JVM ...
Вопрос № 2: "Как я могу узнать, хорошо ли работает jvm?"О: Вы можете начать с включения JMX, а затем использовать его для сбора метрик JVM и приложений.Помимо мостов JMX-HTTP, таких как Jolokia и Prometheus JMX Exporter , существует также возможность прямого подключения через JMX.Один из способов:
Предоставить JMX, сконфигурировав следующие аргументы запуска JVM:
-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=4444 -Djava.rmi.server.hostname=127.0.0.1
Обратите внимание, что это присоединяет другой динамический порт RMIи устанавливает имя хоста для сервера RMI.
Переадресация локальных портов на эти порты модуля:
kubectl --namespace=<namespace> port-forward <pod-name> 4444:4444 1099:1099
Запуск локально инструмента, который может подключаться к JVM в модулечерез JMX (jconsole, jvisualvm, jmc ... в зависимости от того, что вам доступно).URL JMX будет выглядеть следующим образом:
service:jmx:rmi://127.0.0.1:4444/jndi/rmi://127.0.0.1:1099/jmxrmi
Вопрос № 3: «Есть ли профилировщик, который я могу подключить к jvm, работающему в модулях?»A: Краткий ответ - «да».Я использовал JProfiler для удаленного профилирования приложений Java, работающих на k8s, через переадресацию портов.(Я не связан с JProfiler и не рекламирую его - это был просто инструмент, для которого у команды, которой я помогал, была лицензия)