Aparece una gran cantidad de procesos ininterrumpibles y procesos zombies en el sistema (teoría)

un estado de proceso

Cuando aumenta iowait, es probable que el proceso permanezca en un estado ininterrumpido durante mucho tiempo porque no puede obtener una respuesta del hardware. A partir del resultado del comando ps o top, puede encontrar que ambos están en el estado D, que es el estado de suspensión ininterrumpida.

R es la abreviatura de Running o Runnable, lo que significa que el proceso está en la cola listo de la CPU, ejecutándose o esperando a ser ejecutado.
D es la abreviatura de Disk Sleep, que significa suspensión ininterrumpida, y generalmente indica que el proceso está interactuando con el hardware y que el proceso de interacción no puede ser interrumpido por otros procesos o interrupciones.
Z es la abreviatura de Zombie, si has jugado al juego "Plants vs. Zombies", debes saber lo que significa. Representa un proceso zombie, es decir, el proceso realmente finalizó, pero el proceso principal no recuperó sus recursos (como descriptores de proceso, PID, etc.).
S es la abreviatura de Interruptible Sleep, que significa estado de suspensión interrumpible, lo que significa que el sistema suspende el proceso porque está esperando un evento. Cuando ocurre el evento que el proceso está esperando, se despierta y entra en el estado R.
I es la abreviatura de Idle, que es el estado inactivo y se utiliza para subprocesos del núcleo que no pueden interrumpir el sueño. Como se mencionó anteriormente, los procesos ininterrumpibles causados ​​por la interacción del hardware están representados por D, pero para algunos subprocesos del kernel, es posible que en realidad no tengan ninguna carga. Idle se usa para distinguir esta situación. Cabe señalar que los procesos en el estado D harán que la carga promedio aumente, pero los procesos en el estado I no lo harán.
Por supuesto, el ejemplo anterior no incluye todos los estados del proceso. Además de los 5 estados anteriores, el proceso también incluye los 2 estados siguientes. El primero es T o t, que es la abreviatura de Stopped or Traced, que indica que el proceso está suspendido o rastreado.

Envíe una señal SIGSTOP a un proceso y se detendrá en respuesta a esta señal; envíele una señal SIGCONT nuevamente y el proceso reanudará su ejecución (si el proceso se inicia directamente en la terminal, debe usar el comando fg , restaurar al primer plano).

Cuando usa un depurador (como gdb) para depurar un proceso, después de usar un punto de interrupción para interrumpir el proceso, el proceso se convertirá en un estado de seguimiento, que en realidad es un estado de pausa especial, pero puede usar el depurador para rastrearlo. Y controlar el funcionamiento del proceso según sea necesario. El otro es X, que es la abreviatura de Dead, lo que significa que el proceso ha muerto, por lo que no lo verás en el comando top o ps.

Veamos primero el estado ininterrumpible, que en realidad es para garantizar que los datos del proceso sean consistentes con el estado del hardware y, en circunstancias normales, el estado ininterrumpible finalizará en muy poco tiempo.
Por lo tanto, generalmente podemos ignorar los procesos estatales ininterrumpibles de corto plazo. Sin embargo, si se produce una falla del sistema o del hardware, el proceso puede permanecer en un estado ininterrumpible durante mucho tiempo o incluso provocar una gran cantidad de procesos ininterrumpibles en el sistema. En este momento, debe prestar atención a si el sistema tiene problemas de E/S u otros problemas de rendimiento.

Si el proceso padre no hace esto, o el proceso hijo se ejecuta demasiado rápido, el proceso hijo saldrá antes de que el proceso padre tenga tiempo de procesar el estado del proceso hijo, y luego el proceso hijo se convertirá en un proceso zombie. En otras palabras, el padre siempre debe ser responsable de su hijo y empezar bien y terminar bien, si no actúa o no puede seguir el ritmo, surgirán "niños problemáticos".

Por lo general, el proceso zombie dura poco tiempo y morirá después de que el proceso principal recupere sus recursos, o morirá después de que el proceso principal salga y sea reclamado por el proceso de inicio.

Una vez que el proceso principal no maneja la terminación del proceso secundario y continúa ejecutándose, el proceso secundario siempre estará en un estado zombie. Una gran cantidad de procesos zombies se quedarán sin números de proceso PID e impedirán que se creen nuevos procesos, por lo que se debe evitar esta situación.

Análisis de dos casos

1. Trabajo de preparación
: Instale Docker, Sysstat, Dstat y otras herramientas, como apt install docker.io dstat sysstat
dstat es una nueva herramienta de rendimiento que absorbe las ventajas de vmstat, iostat, ifstat y otras herramientas, y puede observar la CPU del sistema. al mismo tiempo, E/S de disco, red y uso de memoria.

Una vez completada la instalación, primero ejecutamos el siguiente comando para ejecutar la aplicación del caso:

docker run --privileged --name=app -itd feisky/app:iowait /app -d /dev/vdb1

ps aux| grep app

Insertar descripción de la imagen aquí
En esta interfaz, podemos encontrar que se han iniciado múltiples procesos de aplicaciones y sus estados son Ss+ y D+ respectivamente. Entre ellos, S representa el estado de sueño interrumpible y D representa el estado de sueño ininterrumpido. Lo acabamos de aprender antes, entonces, ¿qué significan los siguientes sy +? No importa si no lo sabes, solo marca man ps. Ahora recuerde, s significa que este proceso es el proceso líder de una sesión y + significa el grupo de procesos de primer plano.

Aquí aparecen dos nuevos conceptos, grupos de procesos y sesiones. Se utilizan para gestionar un grupo de procesos interrelacionados y su significado es realmente fácil de entender.

Un grupo de procesos representa un grupo de procesos interrelacionados, por ejemplo, cada proceso hijo es miembro del grupo del proceso padre;
y una sesión se refiere a uno o más grupos de procesos que comparten el mismo terminal de control.
Cuando iniciamos sesión en el servidor a través de SSH, se abrirá una terminal de control (TTY), y esta terminal de control corresponde a una sesión. Los comandos que ejecutamos en la terminal y sus subprocesos forman grupos de procesos. Entre ellos, los comandos que se ejecutan en segundo plano constituyen el grupo de procesos en segundo plano y los comandos que se ejecutan en primer plano constituyen el grupo de procesos en primer plano.

Insertar descripción de la imagen aquí

El segundo punto es que la cantidad de procesos zombies está aumentando, lo que indica que algunos programas no pudieron limpiar correctamente los recursos de los procesos secundarios. Entonces, ¿qué debemos hacer si nos encontramos con estos dos problemas?

resumen

Hoy en día estamos familiarizados con varios estados de proceso necesarios principalmente a través de operaciones simples. Podemos usar ps o top, con el que estamos más familiarizados, para ver el estado del proceso, que incluye en ejecución (R), inactivo (I), suspensión ininterrumpida (D), suspensión interrumpible (S), zombie (Z). y suspendido (T). )espera.
Entre ellos, el estado ininterrumpido y el estado zombie son nuestro enfoque hoy. El estado ininterrumpible indica que el proceso está interactuando con el hardware. Para proteger la coherencia de los datos del proceso y el hardware, el sistema no permite que otros procesos o interrupciones interrumpan el proceso. Un proceso que permanece en un estado ininterrumpible durante un período prolongado de tiempo generalmente indica un problema de rendimiento de E/S en el sistema. Un proceso zombie significa que el proceso ha salido, pero su proceso padre no ha reclamado los recursos ocupados por el proceso hijo. Por lo general, no prestamos atención al estado zombie a corto plazo, pero si el proceso permanece en estado zombie durante mucho tiempo, debemos prestarle atención, puede haber una aplicación que no maneje la salida del niño. procesar adecuadamente.

Los procesos inactivos, los procesos ininterrumpibles y los procesos zombis generalmente no se pueden eliminar con Kill-9.

Supongo que te gusta

Origin blog.csdn.net/tian830937/article/details/132636569
Recomendado
Clasificación