Что вы отслеживаете с помощью JMX в своем производственном Java-приложении?

Этот вопрос не о том, как работает JMX или что делает JMX. Этот вопрос касается приложений JMX в стандартной среде сервера приложений в производственной среде. Это тоже не для конкретного сервера.

Что вы отслеживаете с помощью JMX в производственной среде, в которой работает стандартный стек служб Java EE: доступ к базе данных (JDBC и JPA), EJB сеанса, JMS, веб-сервер, веб-службы, службы с поддержкой AJAX?


person topchef    schedule 05.11.2009    source источник


Ответы (5)


На уровне JVM я отслеживаю продолжительность сборки мусора в минуту,

На уровне контейнера сервлетов я отслеживаю количество запросов, количество исключений (коды 4xx и 5xx), сумму длительности запросов в минуту,

На уровне SOAP я отслеживаю количество вызовов, количество исключений и сумму вызовов на операцию и в минуту,

На уровне Web MVC Framework я отслеживаю количество вызовов, количество исключений и сумму вызовов на действие и в минуту,

Для пулов (источник данных, пул потоков / служба исполнителя) я отслеживаю активный счетчик,

Для подключений JMS я отслеживаю количество отправленных и полученных сообщений в минуту, а также количество активных получателей,

Для EhCache я отслеживаю количество записей в кеше, количество попаданий и пропусков в минуту,

На уровне бизнес-приложения я разработал аннотацию @Profiled для отслеживания количества вызовов, количества исключений и общей продолжительности в минуту.

Если вас интересуют такие метрики, мы разработали множество дополнений JMX (dbcp, util.concurrent, jms, @profiled annotation) и упаковали все это с помощью конфигурации на основе пространства имен Spring XML, плагинов Hyperic HQ, мониторинга jsp-страниц и т. Д.

Подробности здесь: http://code.google.com/p/xebia-france/wiki/XebiaManagementExtras.

Весь этот код лицензирован в рамках удобной для бизнеса лицензии Apache Software License 2 с открытым исходным кодом, развернутой в Maven Central Repository, загружаемой в виде jar-файла и доступной на сервере Google Code Subversion для интеграции так, как вы хотите.

Надеюсь это поможет,

Кирилл (Ксебия)

person Community    schedule 23.11.2010

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

person Rob Smith    schedule 05.11.2009

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

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

person Brian Agnew    schedule 05.11.2009

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

person Gaël Marziou    schedule 05.11.2009

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

person Javamann    schedule 05.11.2009
comment
Не могли бы вы дать ссылку, демонстрирующую использование jmx для этой цели? - Мне нужно использовать функцию динамического добавления функций к существующим компонентам. - person techzen; 13.11.2009