risposta-alla-domanda-sullo-sviluppo-web-bd.com

Numero massimo di processi in linux

Qual è il limite massimo al numero di processi possibili in un sistema Linux? Come possiamo trovarlo?

56
kdexter

Il tuo kernel dovrebbe esportare queste informazioni in procfs:

cat /proc/sys/kernel/pid_max

Questo è il numero massimo di identificativi di processo univoci che il tuo sistema può supportare.

Poiché è un file, /proc/sys/kernel/pid_max può essere ispezionato da qualsiasi linguaggio di programmazione capace.

47
user257111

sysctl kernel.pid_max 

o

cat/proc/sys/kernel/pid_max

Come suggerito da Ninefingers.

Per completezza, è possibile modificarlo temporaneamente scrivendo in/proc/syskernel/pid_max o in modo permanente aggiungendo:

kernel.pid_max = 4194303

a /etc/sysctl.conf. 4194303 è il limite massimo per x86_64 e 32767 per x86.

20
Lester Cheung

Risposta breve alla tua domanda: il numero di processi possibili nel sistema linux èUNLIMITED.

Ma c'è un limite al numero di processi per utente (tranne root che non ha limiti).

E puoi controllare i tuoi limiti utente con il comando di sotto (adatto a "max processi utente").

$ 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

Se vuoi aumentare il limite al numero di processi per un particolare utente (per esempio: hadoop), devi inserire la seguente voce in /etc/security/limits.conf  

hadoop - nproc 500000
16
Ankit Singhal

kernel.pid_max è un fattore limitante, ma almeno altrettanto importante è kernel.threads-max. Vale la pena notare che il valore predefinito di nproc per ciascun utente è kernel.threads-max diviso per due e che ogni thread conta per il limite di nproc di un utente. Pertanto, ps -u $USER potrebbe far sembrare che un utente non abbia esaurito il limite di nproc, ma ps -L -u $USER potrebbe raccontare una storia molto diversa.

5
Andy Grimm

Intendevi che un processo mongodb può creare solo con max nproc = threads-max / 2?

Perché sto cercando di aumentare nproc come illimitato.

Ho provato a mettere limiti su /etc/security/limits.conf come in questo modo: mongodb soft nproc unlimited mongodb hard nproc unlimited mongodb soft nofile 50000 mongodb hard nofile 50000 mongodb soft sigpending unlimited mongodb hard sigpending unlimited Tuttavia non ha riflettuto sul processo di mongodb anche dopo il riavvio completo.

Poi ho provato a mettere il comando ulimit -u unlimited a /etc/init.d/mongodb ma dopo che ho provato ad iniziare con questo file ho ottenuto 

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

errore. Questo kernel.threads-max limita il conteggio dei processi di mongodb max?

0
hardc0der