web-dev-qa-db-fra.com

Nombre maximal de processus sous Linux

Quelle est la limite maximale du nombre de processus possibles dans un système Linux? Comment pouvons-nous le trouver?

56
kdexter

Votre noyau devrait exporter cette information dans procfs:

cat /proc/sys/kernel/pid_max

Il s'agit du nombre maximal d'identificateurs de processus uniques que votre système peut prendre en charge.

Comme il s’agit d’un fichier, /proc/sys/kernel/pid_max peut être inspecté à partir de n’importe quel langage de programmation compatible.

47
user257111

sysctl kernel.pid_max 

ou

cat/proc/sys/kernel/pid_max

Comme suggéré par Ninefingers.

Pour être complet, vous pouvez le modifier temporairement en écrivant dans/proc/syskernel/pid_max ou de manière permanente en ajoutant:

kernel.pid_max = 4194303

dans /etc/sysctl.conf. 4194303 est la limite maximale pour x86_64 et 32767 pour x86.

20
Lester Cheung

Réponse courte à votre question: Le nombre de processus possibles dans le système Linux estUNLIMITED.

Mais il y a une limite sur le nombre de processus par utilisateur (sauf root qui n'a pas de limite).

Et vous pouvez vérifier vos limites utilisateur avec la commande ci-dessous (applicable à "processus utilisateur maxi").

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 256447
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 128000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 500000
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Si vous souhaitez augmenter la limite de nombre de processus pour un utilisateur particulier (par exemple: hadoop), vous devez saisir une entrée inférieure à /etc/security/limits.conf  

hadoop - nproc 500000
16
Ankit Singhal

kernel.pid_max est un facteur limitant, mais au moins aussi important est kernel.threads-max. Il convient de noter que la valeur par défaut de nproc ulimit pour chaque utilisateur est kernel.threads-max divisée par deux, et que chaque thread compte pour la limite de nproc d'un utilisateur. Ainsi, ps -u $USER peut faire apparaître qu'un utilisateur n'a pas épuisé sa limite de nproc, mais ps -L -u $USER pourrait raconter une histoire très différente.

5
Andy Grimm

Voulez-vous dire qu'un processus mongodb ne peut créer qu'avec max nproc = threads-max / 2?

Parce que j'essaye d'augmenter nproc sans limite.

J'ai essayé de mettre des limites sur /etc/security/limits.conf comme ceci: mongodb soft nproc unlimited mongodb hard nproc unlimited mongodb soft nofile 50000 mongodb hard nofile 50000 mongodb soft sigpending unlimited mongodb hard sigpending unlimited Cependant, il n'a pas réfléchi au processus de mongodb même après le redémarrage complet.

Alors j'ai essayé de mettre la commande ulimit -u unlimited à /etc/init.d/mongodb mais après avoir essayé de commencer avec ce fichier, je me suis 

/etc/init.d/mongodb: 67: ulimit: Illegal option -u

erreur. Ce kernel.threads-max limite-t-il le nombre de processus mongodb max?

0
hardc0der