56 votes

Nombre maximum de processus sous linux

Quelle est la limite maximale du nombre de processus possible dans un système linux ? Comment la trouver ?

47voto

Ninefingers Points 18767

Votre noyau devrait exporter cette information dans procfs :

cat /proc/sys/kernel/pid_max

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

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

20voto

Lester Cheung Points 597

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 façon permanente en ajoutant :

kernel.pid_max = 4194303

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

16voto

Ankit Singhal Points 191

Réponse courte à votre question : Le nombre de processus possibles dans le système linux est le suivant ILLIMITÉE .

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 d'utilisateur avec la commande ci-dessous (apparentée à "max user processes").

$ 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 voulez augmenter la limite du nombre de processus pour un utilisateur particulier (par exemple : hadoop), vous devez faire l'entrée suivante dans le champ /etc/security/limits.conf

hadoop - nproc 500000

5voto

Andy Grimm Points 123

kernel.pid_max est un facteur limitant, mais au moins aussi important, il y a kernel.threads-max . Il est intéressant de noter que l'ulimit par défaut de nproc pour chaque utilisateur est de kernel.threads-max divisé par deux, et que chaque thread compte dans la limite de nproc d'un utilisateur. Ainsi, ps -u $USER peut donner l'impression qu'un utilisateur n'a pas épuisé sa limite de nproc, mais ps -L -u $USER pourrait raconter une histoire très différente.

0voto

hardc0der Points 186

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

Parce que j'essaie d'augmenter nproc de manière illimitée.

J'ai essayé de mettre des limites sur /etc/security/limits.conf comme ça : 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, cela ne s'est pas reflété sur le processus mongodb, même après un redémarrage complet.

Puis j'ai essayé de mettre ulimit -u unlimited pour /etc/init.d/mongodb mais après avoir essayé de démarrer avec ce fichier, j'ai obtenu

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

erreur. Est-ce que c'est kernel.threads-max limite le nombre de processus maximum de mongodb ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X