mbean management ejemplo java performance java-ee monitoring jmx

management - ¿Qué monitoreas con JMX en tu aplicación Java de producción?



jmx ejemplo (5)

En el nivel de JVM , controlo la duración de la recolección de basura por minuto,

En el nivel de Servlet Container , controlo el número de solicitudes, el número de excepciones (códigos 4xx y 5xx), la suma de la duración de la solicitud por minuto,

En el nivel SOAP , controlo el número de invocaciones, el número de excepciones y la suma de invocaciones por operación y por minuto,

En el nivel de Web MVC Framework , controlo el número de invocaciones, el número de excepciones y la suma de invocaciones por acción y por minuto,

Para las agrupaciones ( fuente de datos, grupo de subprocesos / servicio del ejecutor ), superviso el recuento activo,

Para las conexiones JMS , controlo el número de mensajes enviados y recibidos por minuto y el número de receptores activos,

Para EhCache , controlo el número de entradas en el caché, el número de visitas y fallas por minuto,

En el nivel de aplicación comercial , desarrollé una anotación @Profiled para monitorear el número de invocaciones, el número de excepciones y la duración total por minuto.

Si está interesado en ese tipo de métricas, desarrollamos muchos extras JMX (dbcp, util.concurrent, jms, @profiled annotation) y empaquetamos todo esto con la configuración basada en el espacio de nombres de Spring XML, los complementos Hyperic HQ, el monitoreo de páginas jsp, etc.

Los detalles están aquí: http://code.google.com/p/xebia-france/wiki/XebiaManagementExtras .

Todo este código está licenciado por la licencia de software amigable para software libre Apache 2, implementada en Maven Central Repository, descargable como un contenedor y disponible en un servidor Google Code Subversion para integrarse de la manera que desee.

Espero que esto ayude,

Cyrille (Xebia)

Esta pregunta no se trata de cómo funciona JMX o qué hace JMX. Esta pregunta es acerca de las aplicaciones de JMX en un entorno de servidor de aplicaciones estándar en producción. No es para servidor específico tampoco.

¿Qué supervisa con JMX en el entorno de producción que ejecuta la pila estándar de servicios Java EE: acceso a la base de datos (JDBC y JPA), EJB de sesión, JMS, servidor web, servicios web, servicios habilitados para AJAX?


En un proyecto anterior, supervisamos el conteo de hilos y la memoria, el número de sesiones HTTP y el tamaño de las cachés de consulta. El otro interés de JMX con los cachés es que puedes forzar un color.


He usado JMX para exponer un MBean que permitirá el ajuste dinámico de los niveles de Log4J Logger. Esto resultó ser muy útil para una aplicación en clúster donde no queríamos tener que modificar el archivo de configuración log4j en todos los nodos para cambiar el nivel de registro para un registrador específico.


Un poco de OT pero puedes usar JMX por un poco más. Actualmente estoy usando JMX para los componentes hot deploy / hot fix. Agregue funcionalidad de forma dinámica a los componentes existentes (filtro, etc.). JMX es bueno para la comunicación entre componentes en la misma JVM. Cada componente que creo está equipado para usar JMX.


Mi requisito más común es monitorear el conteo de hilos y la memoria. Mi trabajo más reciente involucraba servidores con muchos subprocesos distribuidos a grillas, y era importante monitorear el uso de subprocesos (una medida de la cantidad de trabajo de despacho que el servidor estaba llevando a cabo). La memoria está estrechamente ligada al uso de subprocesos (en parte debido a los objetos asociados con cada subproceso, en parte debido a la asignación de pila implícita por subproceso).

También habilitamos JMX nuestros datos de cola de carga de trabajo. Los síntomas o efectos supervisados ​​anteriormente de los elementos de trabajo en cola, pero en última instancia, queríamos controlar las colas reales de trabajo. Vale la pena exponer los componentes clave a través de JMX para obtener una perspectiva más clara de lo que está sucediendo.