r Una herramienta de estadísticas y supervisión del rendimiento de Java no intrusiva y de alto rendimiento


fondo

Con el desarrollo de la empresa, la escala de los servicios de aplicaciones continúa expandiéndose, y la arquitectura de aplicación vertical original ya no puede cumplir con el desarrollo del producto.Docenas de ingenieros desarrollan diferentes funciones en paralelo en un proyecto, y la eficiencia del desarrollo continúa disminuyendo.

Como resultado, la empresa comenzó a promover integralmente el proceso orientado a servicios y concentró a la mayoría de los ingenieros del equipo en el proceso orientado a servicios. La servitización permite que cada ingeniero desarrolle solo en los subproyectos de los que es responsable, lo que mejora la eficiencia del desarrollo, pero la orientación a servicios también trae otros problemas:

  • Es imposible saber el estado de ejecución de cada servicio, por ejemplo, ¿cuál es el QPS actual de un determinado servicio? ¿Cuál es su latencia promedio, cuál es su latencia del 99 % y cuál es su latencia del 99,9 %?
  • El tiempo de respuesta de cierta interfaz es lento, ¿cómo localizar qué método lo está causando?
  • ¿La carga está balanceada para cada servicio?
  • Cuando hay inestabilidad en el servicio, ¿cómo juzgar si es causado por la base de datos, la caché o el servicio descendente?
  • ¿Cuál es la latencia de respuesta de la base de datos y la caché?
  • ¿Cómo evaluar la capacidad del servicio, a medida que las llamadas de servicio se vuelven más y más grandes, cuántas máquinas necesita soportar el servicio? ¿Cuándo se debe agregar la máquina?

Para resolver los problemas del desarrollo anterior, hoy presentamos una herramienta de estadísticas y supervisión del rendimiento de Java de alto rendimiento diseñada para aplicaciones de alta simultaneidad y baja latencia: MyPerf4J  .

Escenas a utilizar

  • Localice rápidamente cuellos de botella de rendimiento en aplicaciones Java en un entorno de desarrollo
  • Supervisión a largo plazo de las métricas de rendimiento de aplicaciones Java en un entorno de producción

característica

  • Alto rendimiento:  un solo subproceso admite registros de 10 millones de tiempos de respuesta por segundo, y cada registro tarda solo 73 nanosegundos
  • Sin intrusión: se utiliza el método JavaAgent, sin intrusión en el programa de la aplicación, sin necesidad de modificar el código de la aplicación
  • Poca memoria:  Usando la multiplexación de memoria, solo se generan unos pocos objetos temporales en todo el ciclo de vida, lo que no afecta el GC de la aplicación
  • Alta precisión:  Los tiempos de respuesta se calculan en nanosegundos
  • Alto tiempo real:  Admite monitoreo de segundo nivel, mínimo 1 segundo.

Indicadores de seguimiento

MyPerf4J recopila docenas de indicadores de seguimiento para cada aplicación, y todos los indicadores de seguimiento se recopilan y muestran en tiempo real.

La siguiente es una lista de indicadores de monitoreo que MyPerf4J admite actualmente:

Método

RPS, recuento, promedio, mínimo, máximo, desviación estándar, TP50, TP90, TP95, TP99, TP999, TP9999, TP99999, TP100

06bb609da584d9165b6e91dda1936cdc.jpeg

Memoria

HeapInit,HeapUsed,HeapCommitted,HeapMax,NonHeapInit,NonHeapUsed,NonHeapCommitted,NonHeapMax

3412c27d8a54823bb0ce809745dc4e9d.jpeg

GC de JVM

CollectCount,CollectTime

d284324401074b2a7cf79a1bf1f1b124.jpeg

Clase JVM

Total,Cargado,Descargado

15ee5e1cd000c41ba5a5069a144319dc.jpeg

Inicio rápido

MyPerf4J utiliza el método de configuración JavaAgent para acceder de forma transparente a la aplicación sin ninguna intrusión en el código de la aplicación.

descargar

  • Descargar y descomprimir MyPerf4J-ASM.zip
  • Lea el archivo README extraído
  • Modifique los valores de configuración de  app_name, metrics.log.xxx  y  filter.packages.include  en el archivo de configuración MyPerf4J.properties extraído

Paquete MyPerf4J-ASM.zip: https://github.com/LinShunKang/Objects/blob/master/zips/CN/MyPerf4J-ASM-3.3.0-SNAPSHOT.zip?raw=true

configuración

Agregue los siguientes dos parámetros a los parámetros de inicio de JVM

-javaagent:/ruta/a/MyPerf4J-ASM.jar
-DMyPerf4JPropFile=/ruta/a/MyPerf4J.properties

correr

Inicie la aplicación y controle la salida del registro en  /path/to/log/method_metrics.log:

Métricas del método MyPerf4J[2020-01-01 12:49:57, 2020-01-01 12:49: 58] <uni=1>Método[6] RP S   Promedio (ms) Min (ms) Máx (ms) Desv estándar TP50    TP90     TP95     TP99 TP999 TP9999

DemoServiceImpl.getId2(largo)   6524 6524 0,49 0,49 0,49 sp;1   ;   0.50 6524 6524 0 1 1 sp;   1 1 1 1 ;      1
DemoServiceImpl.getId3(largo)   4350 0,68 0,68 0,68 0,68 sp;1   ;   0.47 4350 4350 1 1 sp;   1 1 1 1 ;      1
DemoServiceImpl.getId4 (largo)   2176 0,76 0,76 0,76 sp;1   ;   0.43 2176 2176 1 1 sp;   1 1 1 1 ;      1
DemoServiceImpl.getId1 (largo) bsp; 8704 0,00 0,00 0 0 sp;   ;0     0.00 8704 8704 0 0 sp;   0 0 0 0 ;      0
DemoDAO.getId1 (largo) bsp;  0,00 % 2176 0,00 % ; 0  ;       0     0.00 2176 2176 0 0 sp;   0 0 0 0 ;      0
DemoDAO.getId2()            DynamicProxy   & nbsp;  ;DAO 0,00 % 2176 0,00 %       0        0   0.00 2176 2176 0 0 sp;   0 0 0 0 ;      0

desinstalar

Elimine los siguientes dos parámetros en los parámetros de inicio de JVM y reinicie para desinstalar esta herramienta.

-javaagent:/ruta/a/MyPerf4J-ASM.jar
-DMyPerf4JPropFile=/ruta/a/MyPerf4J.properties

Dirección de fuente abierta: github.com/LinShunKang/MyPerf4J


Supongo que te gusta

Origin blog.csdn.net/zhaomengsen/article/details/132067687
Recomendado
Clasificación