Pasos de solución de problemas de CPU alta en línea:
método uno:
- comando superior para ver el proceso y el uso de la CPU
- Juzgar si el GC hace que la CPU se acelere depende principalmente de la frecuencia del GC y el uso de la memoria. Para ver los comandos específicos, consulte: Comandos comunes de jvm
- Si no es un problema de GC, top -Hp PID para ver la situación del subproceso del proceso con el mayor uso de CPU
- Después de determinar el subproceso, calcule el valor hexadecimal correspondiente a la ID del subproceso: printf "%x\n" <java_thread_id>
- Muestra el contenido de la pila de subprocesos: jstack <java_pid> | grep <valor hexadecimal de id de subproceso> -A 30 [-A 30 significa imprimir 30 líneas hacia abajo], luego puede ver qué parte del código comercial hace que la CPU se eleve alto. La información aquí puede ser precisa para la clase, el método y el número de línea del código Java:
- De acuerdo con el resultado del tercer paso, modifique el código de lógica de negocios
Método dos:
1. Exporte la información de la pila correspondiente al hilo en el método 1:
jstack PID > stack.text
Una vez completada la carga, se analizará el archivo y se obtendrá la siguiente información:
Comando superior y descripción de parámetros:
1. Verifique el uso de la CPU en línea: comando superior
En la imagen de arriba, el resultado de mi comando superior no es el mismo que el suyo. Mi fuente es roja y muestra la cantidad de CPU y el uso privado de cada uno, así como el uso de la memoria es una estructura gráfica. Y la captura de pantalla de tu comando superior debería verse así:
Esto requiere recordar varias teclas y funciones:
- Presiona z para cambiar el color del trazo superior
- Presione 1 para ver una representación gráfica de cada núcleo de CPU en el sistema
- La tecla m muestra gráficamente el uso de la memoria
- t visualización gráfica del uso de la CPU
1.1 información de parámetros superior
- up *** days, *** min : indica que este servidor se ejecuta continuamente durante *** días *** minutos
- *** usuarios: el número de usuarios conectados actualmente
- promedio de carga: ***, ***, ***: carga del sistema, es decir, la longitud promedio de la cola de tareas. Los tres valores son el valor promedio desde hace 1 minuto, 5 minutos y 15 minutos hasta el presente
1.2 Tareas del sistema de tareas
- total: el número total de procesos
- en ejecución: el número de procesos que se están ejecutando
- durmiendo: el número de procesos que están durmiendo
- detenido: número de procesos suspendidos
- zombi: número de procesos zombi
1.3 %Cpu Uso de la CPU del sistema
- us : índice de ocupación de usuarios del sistema
- sy: índice de ocupación del núcleo del sistema
- ni: relación de ocupación de programación prioritaria
- id: CPU inactiva
- wa: relación de ocupación igual de E/S
- hola: ocupación de interrupción de hardware
- si: interrupción de software ocupada
- st: virtualización ocupada
1.4 Uso de la memoria del sistema Kib Mem
- total: espacio de memoria total
- libre: memoria libre
- usado: usado
- buff/cache: la suma de los búferes de la memoria física y la memoria de intercambio.
1.5 Uso del espacio de intercambio del sistema Kib Swap
- total: espacio de intercambio total
- gratis: espacio de intercambio gratuito
- used: espacio de intercambio usado
- aproveche Mem: espacio físico disponible.
1.6 Información del proceso en ejecución, que también es la información más utilizada
- PID: Identificación del proceso
- USUARIO: dueño del proceso
- relaciones públicas: prioridad
- NI: prioridad del proceso
- VIRT: memoria virtual
- RES: la memoria física real utilizada
- SHR: tamaño de memoria compartida
- S: estado del proceso (D = estado de suspensión ininterrumpida, R = en ejecución o ejecutable, S = dormido, T significa rastreado y detenido, Z = zombi
- %CPU: el porcentaje de tiempo de CPU ocupado desde la última actualización
- %MEM: el porcentaje de memoria física utilizada por el proceso
- TIME+: tiempo total de cpu utilizado por el proceso
- COMANDO: nombre de comando/línea de comando
2. Parámetros comunes del comando superior: analice el hilo específico superior -Hp PID
- 1. H: hilo de pantalla
- 2. p: ordenar según el porcentaje de uso de la CPU.
Después de usar el comando top -Hp PID, la información que se muestra es algo diferente del comando top: en lugar de Tarea, muestra Subprocesos, que identifica el número total de subprocesos en el proceso actual.
Documentos de referencia: