Parece haver dois limites para todo o sistema, documentados em Documentation / sysctl / fs.txt
-
fs.file-max
é o número máximo de arquivos abertos (filehandles) em todo o sistema. -
fs.nr_open
é o limite superior global para o número de arquivos abertos por processo e limita o valor deRLIMIT_NOFILE
, que é o queulimit -n
define. Não é novidade que o padrão seja 1024 * 1024 ou 2 ^ 20.
Então:
# sysctl fs.nr_open
fs.nr_open = 1048576
# ulimit -Hn 1048577
-su: ulimit: open files: cannot modify limit: Operation not permitted
# sysctl fs.nr_open=$[ 2**22 ]
fs.nr_open = 4194304
# ulimit -Hn 4000000 # now it can be set
Mas file-max
não parece impedir a configuração do limite por processo, eu defini isso o tempo todo:
# sysctl fs.file-max
fs.file-max = 262144
Então, o que quer que esteja definindo seus limites ( pam_limits.so
?), provavelmente está ficando e ignorando o erro na chamada do sistema devido ao limite definido pelo sysctl. Ou talvez ele registre um erro em algum lugar, verifique seus registros.