Você provavelmente deve verificar a resposta mais votada em: link
UPDATE: Conforme sugerido, copie / cole as informações do outro site:
Estes limites "padrão" são aplicados por:
- o kernel do Linux no tempo de inicialização (para o processo
init
), -
herança , dos limites do processo pai (em
fork(2)
time), - PAM quando a sessão do usuário é aberta (pode substituir o kernel / valores herdados),
- o próprio processo (pode substituir valores herdados do PAM e do kernel / herdados, consulte
setrlimit(2)
).
Os processos dos usuários normais não podem aumentar os limites.
O kernel do Linux
No momento da inicialização, o Linux define limites padrão para o processo init
, que são então herdados por todos os outros processos (filhos). Para ver este limite: grep process /proc/1/limits
.
Por exemplo, o padrão do kernel para número máximo de descritores de arquivos ( ulimit -n
) era 1024/1024 (soft, hard) e foi aumentado para 1024/4096 no Linux 2.6.39.
O número máximo de processos que você está falando está limitado a aproximadamente:
Total RAM in kB / 128
para arquiteturas x86 (pelo menos), mas as distribuições às vezes alteram os valores padrão do kernel, então verifique seu código-fonte do kernel para kernel/fork.c
, fork_init()
. O limite de "número de processos" é chamado RLIMIT_NPROC.
PAM
Geralmente, para garantir a autenticação do usuário no login, o PAM é usado junto com alguns módulos (consulte /etc/pam.d/login
).
No Debian, o módulo PAM responsável por definir limites está aqui: /lib/security/pam_limits.so
.
Esta biblioteca lerá sua configuração a partir de limits.conf
e limits.d/*.conf
, mas mesmo que esses arquivos estejam vazios, pam_limits.so poderá usar valores codificados que você pode verificar dentro do código-fonte.
Por exemplo, no Debian, a biblioteca foi corrigida para que, por padrão, o número máximo de processos ( nproc
) seja ilimitado, e o número máximo de arquivos ( nofile
) seja 1024 / 1024:
case RLIMIT_NOFILE: pl->limits[i].limit.rlim_cur = 1024; pl->limits[i].limit.rlim_max = 1024;
Então, verifique o código-fonte do módulo PAM do CentOS (procure por RLIMIT_NPROC).
No entanto, observe que muitos processos não passarão pelo PAM (geralmente, se eles não forem iniciados por um usuário logado, como daemons e talvez trabalhos agendados).