Todos los usuarios en linux tienen asignados un número de procesos máximo que puede tener en ejecución de manera simultánea. Cuando llegamos al máximo de procesos lanzados, el sistema nos lanzará un error del tipo fork: retry: Resource temporarily unavailable o fork: Resource temporarily unavailable.
Podemos comprobar el número de procesos simultáneos que puede tener un usuario, lanzando el comando ulimit -u, dado un resultado como este:
[user@sr ~]$ ulimit -u
1024
Cuando el usuario user tenga 1025 procesos simultáneos lanzados y quiera lanzar uno más, dará un error fork: Resource temporarily.
Para aumentar esto, tendremos que editar el fichero /etc/security/limits.conf e incluir al final las siguientes lineas:
user hard nproc 16384
user soft nproc 16384
Donde 16384 es el número de procesos simultáneos máximo. Tras reiniciar la máquina, loggarnos con el usuario user y lanzar el comando ulimit -u este nos dará el siguiente resultado:
[user@sr ~]$ ulimit -u
16384
Para hacer esto, hay otra manera más rupestre, que es lanzar lo siguiente:
[root@server ~]# ulimit -u 16384
Al realizarlo, el número máximo de procesos simultáneos se modifica a 16384 pero
solo para la sesión en curso, si queremos que esto sea persistente para un usuario
podríamos meter el comando ulimit -u 16384 en el .bashrc de cada
usuario pero esto complica mucho la manera estándar de hacerlo y
confunde la administración del servidor.
Además pongo un comando que os indicará para todos los usuarios del sistema los procesos activos que tienen:
ps -A -o pid,thcount,user,comm |tail -n +2|awk '{print $3" " $2}' | awk ' {arr[$1]+=$2} END {for (i in arr) {print arr[i],i}}'
La salida será similar a esta:
[root@sr bin]# ps -A -o pid,thcount,user,comm |tail -n +2|awk '{print $3" " $2}' | awk ' {arr[$1]+=$2} END {for (i in arr) {print arr[i],i}}'
17 gdm
1 ntp
1 rpc
1 dbus
3 68
3 rtkit
2 postfix
1 rpcuser
664 root
Donde el primer campo corresponde a los procesos activos y el segundo al nombre del usuario.
Gracias por la explicación, corta y precisa !.
ResponderEliminarGracias a ti por comentar :-)
Eliminargracias por la reseña amigo, estaba teniendo problema y lo he podido solucionar. Eso si, me gustaria saber cuantos procesos tiene corriendo actualmente el usuario. Saludos
ResponderEliminarthank you very much for the detailed explaination. but I think there might be a way to increase the max processed value without restarting the server
ResponderEliminar