it-swarm.com.ru

Максимальное количество процессов в Linux

Какое максимальное ограничение на количество процессов возможно в системе Linux? Как мы можем найти это?

56
kdexter

Ваше ядро ​​должно экспортировать эту информацию в procfs:

cat /proc/sys/kernel/pid_max

Это максимальное количество уникальных идентификаторов процессов, которое может поддерживать ваша система.

Поскольку это файл, /proc/sys/kernel/pid_max может быть проверен на любом способном языке программирования.

47
user257111

sysctl kernel.pid_max 

или же

cat/proc/sys/kernel/pid_max

По предложению Ninefingers.

Для полноты вы можете временно изменить его, написав в/proc/syskernel/pid_max или добавив:

kernel.pid_max = 4194303

в /etc/sysctl.conf. 4194303 - это максимальный предел для x86_64 и 32767 для x86.

20
Lester Cheung

Краткий ответ на ваш вопрос: Количество возможных процессов в системе linuxНЕОГРАНИЧЕНО.

Но есть ограничение на количество процессов на пользователя (кроме root, который не имеет ограничений).

И вы можете проверить свои лимиты пользователя с помощью команды ниже (в отличие от «Макс пользовательских процессов»).

$ 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

Если вы хотите увеличить ограничение на количество процессов для конкретного пользователя (например, для hadoop), вам нужно сделать следующую запись в /etc/security/limits.conf  

hadoop - nproc 500000
16
Ankit Singhal

kernel.pid_max является ограничивающим фактором, но, по крайней мере, столь же важным является kernel.threads-max. Стоит отметить, что значение nproc ulimit для каждого пользователя по умолчанию равно kernel.threads-max, деленному на два, и что каждый поток учитывает ограничение nproc пользователя. Таким образом, ps -u $USER может создать впечатление, что пользователь не исчерпал свой предел nproc, но ps -L -u $USER может рассказать совсем другую историю.

5
Andy Grimm

Вы имели в виду, что процесс mongodb можно создавать только с помощью max nproc = threads-max / 2?

Потому что я пытаюсь увеличить nproc как неограниченный.

Я попытался установить ограничения на /etc/security/limits.conf следующим образом: mongodb soft nproc unlimited mongodb hard nproc unlimited mongodb soft nofile 50000 mongodb hard nofile 50000 mongodb soft sigpending unlimited mongodb hard sigpending unlimited Однако он не отразился на процессе mongodb даже после полной перезагрузки.

Затем я попытался поместить команду ulimit -u unlimited в /etc/init.d/mongodb, но после того, как я попытался начать с этим файлом, я получил 

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

ошибка. Это kernel.threads-max ограничивает максимальное количество процессов mongodb?

0
hardc0der