Corrigindo ulimit: arquivos abertos: não é possível modificar o limite: Operação não permitida

13

Eu testei isso em diferentes instalações do GNU / Linux:

perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'

Sistema A e D

O primeiro limite que atingi é 1024. É facilmente aumentado colocando isso em /etc/security/limits.conf:

*                hard    nofile          1048576

e então execute:

ulimit -n 1048576
echo 99999999 | sudo tee /proc/sys/fs/file-max

Agora o teste vai para 1048576.

No entanto, parece que não posso aumentá-lo acima de 1048576. Se eu colocar 1048577 em limits.conf, ele é simplesmente ignorado.

O que está causando isso?

Sistema B

No sistema, o BI nem consegue chegar a 1048576:

echo 99999999 | sudo tee /proc/sys/fs/file-max

/etc/security/limits.conf:

*                hard    nofile          1048576

Aqui eu recebo:

$ ulimit -n 65537
bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 65536
#OK

De onde veio esse limite?

Sistema C

Este sistema também possui o limite 1048576 em limits.conf e 99999999 em / proc / sys / fs / file-max.

Mas aqui o limite é 4096:

$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 4096
# OK

Como elevo isso para (pelo menos) 1048576?

(Nota para si mesmo: não faça echo 18446744073709551616 | sudo tee /proc/sys/fs/file-max:)

Ole Tange
fonte
1
Eu tenho exatamente o mesmo problema, o limite parece ser 1048576. Se eu passar por cima, recebo o seguinte erro: bash: ulimit: arquivos abertos: não é possível modificar o limite: Operação não permitida
Abbadon
Oi, estou tendo um problema muito semelhante. Eu acho que seria muito útil fornecer mais detalhes sobre o que são esses diferentes sistemas.
Time4Tea

Respostas:

4

Verifique se /etc/ssh/sshd_configcontém:

UsePAM=yes

e que /etc/pam.d/sshdcontém:

session    required   pam_limits.so

Ainda não há resposta para por que 1048576 é máx.

O 1048576 parece ser por processo. Portanto, tendo vários processos, esse limite pode ser superado.

Ole Tange
fonte
4
Se essa era realmente a solução para o seu próprio problema, acho que seria bom estabelecer uma conexão maior entre o problema e a solução acima.
Jeff Schaller
2
Re: 1048576 (= 2 ^ 10 * 2 ^ 10 = 1024 ^ 2, para referência). Pode haver algumas informações relevantes nesta resposta aqui: stackoverflow.com/a/1213069/2320823
Saladi
1
O que o ssh tem a ver com isso?
Linas
Eu concordo com @Linas. Desculpe, acho que o vínculo entre a resposta e a pergunta não é claro.
Time4Tea