Что Вы контролируете с JMX в Вашем производственном JAVA-приложении?

Там не существует никакой платформенно независимый путь, который, как могут гарантировать, будет работать во всех jvm реализациях. ManagementFactory.getRuntimeMXBean().getName() похож на лучшее (самое близкое) решение. Это коротко, и , вероятно работы в каждой реализации в широком использовании.

На linux+windows это возвращает значение как 12345@hostname (12345 являющийся идентификатором процесса). Остерегайтесь, хотя это согласно документам , нет никаких гарантий об этом значении:

Возвраты имя, представляющее рабочую виртуальную машину Java. Возвращенная строка имени может быть любой произвольной строкой, и реализация виртуальной машины Java может принять решение встроить определенную для платформы полезную информацию в возвращенную строку имени. Каждая рабочая виртуальная машина могла иметь другое имя.

В Java 9 новое API процесса может использоваться:

long pid = ProcessHandle.current().pid();

32
задан Peter Mortensen 7 March 2016 в 20:22
поделиться

4 ответа

Я использовал JMX для предоставления MBean-компонента, который позволит динамически регулировать уровни Log4J Logger. Это оказалось очень полезным для кластерного приложения, в котором мы не хотели изменять файл конфигурации log4j на всех узлах, чтобы изменить уровень журнала для указанного регистратора.

8
ответ дан 27 November 2019 в 21:00
поделиться

Моим наиболее частым требованием является мониторинг количества потоков и памяти. Моя последняя работа включала диспетчеризацию серверов с большим количеством потоков в сети, и было важно отслеживать использование потоков (мера того, какой объем диспетчерской работы выполнял сервер). Память тесно связана с использованием потока (частично из-за объектов, связанных с каждым потоком, частично из-за неявного выделения стека для каждого потока).

Мы также поддерживаем JMX для данных нашей очереди рабочей нагрузки. Выше были отслежены симптомы или эффекты рабочих элементов в очереди, но в конечном итоге мы хотели отслеживать фактические очереди работы. Стоит раскрыть ключевые компоненты через JMX, чтобы получить более четкое представление о том, что происходит.

5
ответ дан 27 November 2019 в 21:00
поделиться

Немного OT, но вы можете использовать JMX для большего. В настоящее время я использую JMX для горячего развертывания / исправления компонентов. Динамически добавлять функциональность к существующим компонентам (фильтр и т. Д.). JMX хорош для связи между компонентами на одной JVM. Каждый компонент, который я создаю, приспособлен для использования JMX.

1
ответ дан 27 November 2019 в 21:00
поделиться

В предыдущем проекте мы отслеживали количество потоков и память, количество HTTP-сеансов и размер кэшей запросов. Другой интерес JMX с кешами заключается в том, что вы можете принудительно выполнить сброс.

1
ответ дан 27 November 2019 в 21:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: