Estoy usando Per4j para supervisar el rendimiento del punto final del servicio web y también el servicio interno y el rendimiento de la clase dao.
Principalmente solo registro las estadísticas de rendimiento sin procesar en un archivo rodante diario. Luego uso el jar en la línea de comando para analizar los datos con diferentes timeslices a mi gusto. A menudo utilizo la opción de línea de comandos -g
para generar un archivo html que luego puedo abrir y visualizar visualmente, lo cual es realmente útil.
Me gusta usar Spring AOP con la anotación @Profiled
. Hace el tiempo muy limpio. Tenía algunas dudas sobre el rendimiento degradante de perf4j, y podría ofrecer fácilmente que podría desactivar el inicio de sesión eliminando el TimingAspect
de mi archivo Spring applicationContext.xml.
<!-- just remove and all uses of @Profiled do nothing -->
<bean id="timingAspect" class="org.perf4j.log4j.aop.TimingAspect"/>
Tenga en cuenta el valor medio y tenga en cuenta el valor máximo. Mientras realizamos la optimización del rendimiento, tuvimos una llamada al método que tenía valores wild con una gran desviación estándar. La mayoría de los valores se encontraban alrededor de la mediana, sin embargo, hubo una gran cantidad de llamadas que fueron 100 veces más que el promedio. Más de error de usuario que nada, pero ten cuidado.
Uso el AsyncCoalescingStatisticsAppender
con un intervalo de tiempo de 15000, pero apenas leo el registro. Como tengo los registros de rendimiento sin procesar, puedo cortar y cambiar eso ejecutando perf4j en la línea de comando.
Probé la integración JMX y funciona según lo prometido en la documentación. Pero no tengo un uso real en este momento para eso.
Tengo planes para exponer los datos usando SNMP y si es útil contribuiré.
En total, recomiendo Perf4j.
Me he topado con Perf4J pero nunca lo intenté, por lo que estaría interesado también. – Mark