Descubrí que mi servidor web java (tomcat) usaba una CPU alta, así que usé 'ps aux' para ver la información del proceso, como:
# ps aux | grep -E "PID|java" USER PID %CPU %MEM root 7533 143 39.8
Mostró que Java tomó 143% de CPU. Luego usé el comando 'superior' para ver, el uso de la CPU del proceso Java también fue de aproximadamente 140%.
Después de eso, desconecté el servidor web (sin acceso, el proceso de error aún está activo). Luego usé top para ver, Java usó una CPU muy baja:
# top | grep -E "PID|java" PID %CPU %MEM TIME+ COMMAND 7533 0.7 39.9 455:13.81 java PID %CPU %MEM TIME+ COMMAND
'vmstat' también mostró que la CPU estaba casi inactiva:
# vmstat 1 -----cpu------ us sy id wa st 19 1 79 1 0 0 0 99 1 0 0 0 100 0 0 0 0 100 0 0 0 0 98 1 0 0 0 99 1 0
Luego, usé el comando 'ps' nuevamente, el resultado fue:
#ps aux | grep -E "PID|java" USER PID %CPU %MEM root 7533 137 39.8
¡Mostró que 7533 todavía necesita 137% de CPU! Después de mucho tiempo, compruebo 'ps' nuevamente, el resultado sigue siendo %137...
Entonces, ¿la dosis del comando 'ps' muestra algunos datos antiguos? ¿Y cómo puedo ver los datos en tiempo real por 'ps' (porque quiero usar 'ps -L' para ver la información del hilo)? ¿O es simplemente imposible?
hay muchas herramientas para ver el estado del proceso almost
en tiempo real, como:
top
htop
dstat
Además, en Linux, puede explorar el estado del sistema, incluida la información de cpu information
del process information
de la network and interface information
etc., en la cuarta carpeta /proc
.
Aquí es donde se extraen todos los datos que extraen las herramientas.