solución de problemas de accidentes de java

arriba: Ver la carga de la CPU                                                                                                                                                                                    

gratis: ver el uso de la memoria

                     total de búferes compartidos libres usados ​​en caché
Mem: 3859356 3697132 162224 12 107688 1724812
- / + búferes / caché: 1864632 1994724
Intercambio: 4194300 79932 4114368
 

df: ver el uso del disco

Sistema de archivos 1K-bloques Usado Disponible Uso% Montado en
/ dev / vda1 3997376 778440 3009224 21% /
tmpfs 4026828 0 4026828 0% / dev / shm
/ dev / vda2 3997376 24544 3763120 1% / home
/ dev / vda5 24637820 19741428 3638204 85% / usr
/ dev / vda3 3997376 232628 3555036 7% / var
 


Después de excluir la situación del disco, si la carga de la CPU es particularmente alta: los procesos Java no hacen muchos cálculos de la CPU. En circunstancias normales, la CPU debe estar entre el 100% y el 200%. Este tipo de situación de sobrecarga de la CPU entrará en un bucle infinito o Está haciendo mucho GC

Utilice el comando jstat -gc pid [intervalo] para ver el estado de GC del proceso de Java:

jstat -gc <pid>: puede mostrar información de gc, verificar el número de gc y la hora.

Cuando GC es muy frecuente, debería ser una pérdida de memoria:

 Use jstack pid> jstack.log para guardar la pila de subprocesos;

 Utilice jmap -dump: format = b, file = heap.hprof pid para guardar la escena del montón;

Sugerencia: La exportación de archivos de pila es relativamente grande y el valor predeterminado son datos binarios, puede usar las propias herramientas de JDK, como (jvisualvm) para el análisis.

Suplemento: Hay dos formas de obtener el archivo dmp de la JVM:

        1. Se agregan dos parámetros cuando se inicia JVM y se genera un volcado de almacenamiento dinámico cuando aparece OOME: 

                -XX: + HeapDumpOnOutOfMemoryError

                Genere la dirección del archivo del montón:

                -XX: HeapDumpPath = / home / test / jvmlogs / 

        2. El archivo dmp de la JVM actual se genera directamente ejecutando instrucciones antes de que se detecte que el programa es anormal

                jmap -dump: en vivo, formato = b, archivo = / opt / soft / heap.hprof pid

El primer método es generar automáticamente un archivo de almacenamiento dinámico cuando ocurre un desbordamiento de memoria en la JVM, y el segundo método es suspender el servicio durante la ejecución, por lo que afectará la operación en línea, por lo que se recomienda el primer método;

 


Los pasos anteriores son todas formas de ayudar a solucionar rápidamente y localizar el problema. Para resolver el problema, aún necesita analizar el código específico.

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_36807862/article/details/89242897
Recomendado
Clasificación