Linux – fork: retry: No child processes

Hoy me he encontrado con una incidencia en que un usuario de Linux RedHat no tenía más recursos para ejecutar nuevas aplicaciones, dando el error «fork: retry: No child processes».

[root@server1 ~]# su - docker
Last login: Wed Mar 30 10:46:45 CEST 2022 from 10.29.155.95 on pts/3
-bash: fork: retry: No child processes
-bash: fork: retry: No child processes
-bash: fork: retry: No child processes

Este error puede deberes a que el parámetro nproc del fichero limits.conf no está lo suficientemente dimensionado o que algún proceso se haya «desmadrado» y haya empezado a utilizar recursos del sistema sin parar.

Esta incidencia se corresponde al segundo caso. Para averiguarlo, he mirado cuántos recursos se estaban utilizando en el sistema:

[root@server1 ~]# lsof |grep docker |wc -l > /tmp/lsof.txt

Tras 15 minutos en ejecución el comando anterior, no me mostraba ningún resultado. Así que he decidido mirar cuántos threads estaba utilizando cada proceso del sistema y los he ordenado de mayor a menor.

[root@server1 ~]# ps -eLf |grep docker |awk '{print $2}' |uniq -c |sort -rnk1 |more
   4060 800291
    109 2240
     27 792864
     15 791931
     12 785046
     12 784731

Como podemos observar, el PID 800291 tiene 4060 threads en ejecución. El siguiente proceso de la lista tiene 109. Por lo tanto, el PID 800291 es un claro candidato al causante del problema.

Tras matar el proceso, ya podíamos volver a acceder con normalidad al sistema sin que diera el error «fork: retry: No child processes».

COMPÁRTEME

Deja un comentario