Diagnóstico de aplicaciones Java

diagnóstico de aplicaciones java

Es posible que los siguientes pasos no se apliquen a todas las aplicaciones de Java. Pasos relevantes del diagnóstico de la aplicación Java:

  • Recopilación de datos de la aplicación.
  • Usar herramientas para el diagnóstico.
  • Diagnóstico de la memoria.
  • Diagnóstico de rendimiento.
  • Diagnóstico de error jvm.

Recopilación de datos de la aplicación.

La recopilación de datos de la aplicación aquí es para recopilar datos relacionados con el rendimiento del sistema y la memoria, no todos los datos de registro de la aplicación. Para los propios datos de la aplicación, imprima el registro de acuerdo con los requisitos de la aplicación, considere usar el marco de registro para facilitar el ajuste del nivel de registro y el diagnóstico de la aplicación. Esto es principalmente para datos relacionados con el rendimiento. ¿Cómo recolectar datos?

  • Recopile datos de memoria (archivo principal) cuando el programa se bloquea.
  • Recopile datos de volcado de montón cuando la memoria se desborda.
  • Recolecte registros de recolección de basura.
  • Parámetros relacionados de jvm al inicio de la colección.
  • Recopile datos en tiempo real (como datos de volcado de subprocesos).
  • Recopile datos de uso de memoria y CPU.

Cómo operar en la aplicación java:

  • archivo central

Los archivos principales se pueden generar cuando Java se aplica a bloqueos. ulimit -c unlimitedÁbralo en el servidor Linux .

  • vertedero

Aumente el -XX:+HeapDumpOnOutOfMemoryErrorparámetro cuando se inicie jvm , luego, cuando la aplicación java salga debido a una excepción OOM, se generará un mensaje de volcado de montón.

  • gc log

El aumento en los parámetros de inicio de jvm -verbosegcimprimirá el registro de gc.

  • parámetros jvm

Al diagnosticar anomalías, también es importante verificar los parámetros de inicio de jvm. Por ejemplo: la estrategia gc de jvm y la asignación de memoria se pueden ver a través de los parámetros de inicio. Agregue los parámetros  -XX+PrintCommandLineFlagsutilizados para imprimir el comando de inicio en los parámetros de inicio.

  • volcado de hilo

La información de volcado de subprocesos debe recopilarse en tiempo real durante el diagnóstico y compararse con el procesamiento de datos. Puede usar jstack para imprimir la información de volcado de hilo correspondiente.

  • Memoria, datos de CPU

Estos datos también se recopilan en tiempo real y se pueden recopilar mediante la herramienta jmc. Puede obtener datos relacionados al monitorear mbean activando jmx. Otro beneficio de habilitar jmx es que se puede monitorear de forma remota.

Diagnosticar la aplicación.

El diagnóstico de la aplicación se puede dividir en varias categorías:

  • Diagnóstico ex post

Dichas herramientas se pueden utilizar para diagnosticar la información de falla después de que ocurra la falla. Tales como: análisis de volcado de montón después de oom.

  • Diagnóstico en línea

Dichas herramientas están dirigidas cuando ocurre una falla. Tales como: análisis de volcado de subprocesos cuando el programa está bloqueado.

  • Monitor

Dichas herramientas se utilizan para supervisar las aplicaciones en ejecución.

  • Otros

Cómo diagnosticar aplicaciones que usan jni, usar la -Xcheck:jniinterfaz de diagnóstico jni e -verbose:jniimprimir el registro de la interfaz jni. Aquí solo quiero clasificar según el tiempo y el método de procesamiento del diagnóstico, pero las herramientas de diagnóstico utilizadas normalmente son tan fijas.

Introducción de parámetros de diagnóstico y herramientas de diagnóstico de uso común.

  • -XX:OnErrorAgregue este parámetro cuando inicie una aplicación java, y puede ejecutar un script definido por el usuario cuando la aplicación salga. Por ejemplo, java -XX: OnError = "mail  [email protected] " app.jar, envíe un correo electrónico al administrador ( [email protected] ) cuando ocurra un error .
  • -XX:+HeapDumpOnOutOfMemoryErrorAlmacene la información de volcado del montón de la aplicación cuando el oom sea anormal. Este comando ha sido mencionado anteriormente.
  • -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository=/tmp,maxage=1h,settings=defaultEste comando permite que la aplicación almacene archivos jfr, que se pueden ver con la herramienta jmc.

Uso de herramientas de diagnóstico.

  • jmc
   
  • jconsole
   
  • jvisualvm
   
  • jps
 
  • jmap

  • jhat
  • jstat
  • jstack
  • jcmd

Problemas diagnosticados

  • Desbordamiento de memoria

El problema del desbordamiento de la memoria puede ser más difícil de solucionar. Necesitamos comparar el estado de los datos de la memoria. Puede usar el comando jcmd para comparar la memoria del commit. Si la memoria del commit es cada vez mayor, entonces existe la posibilidad de una pérdida de memoria.

  • Rendimiento


problemas de rendimiento de rendimiento de gc debido a gc. El rendimiento del programa correspondiente de gc tiene un gran impacto. El largo tiempo que gc no es un problema, el problema es que la pausa durante gc lleva mucho tiempo. Si un gc independiente lleva demasiado tiempo, debe considerar cambiar la estrategia de gc.

El rendimiento de sincronización
utiliza problemas de rendimiento causados ​​por bloqueos de sincronización.

Problemas de rendimiento de rendimiento IO causados ​​por sockets, lecturas y escrituras de archivos.

la ejecución de código Rendimiento
ejecución de código Ver el rendimiento.

  • Problemas de subprocesos Los problemas de subprocesos generalmente se manifiestan en tiempo de ejecución. El hilo tiene principalmente los siguientes dos problemas:

Bucle de hilo

Hilo en vivo

Supongo que te gusta

Origin www.cnblogs.com/jiangwh/p/12710061.html
Recomendado
Clasificación