Não é possível aumentar o limite de arquivos abertos após 4096 (Ubuntu)

19

Estou no Ubuntu 17.04. Tentando aumentar o limite de arquivos abertos, e nenhuma das instruções que encontrei on-line está funcionando. Eu posso ir até 4096, mas não posso passar por isso.

$ ulimit -n
1024
$ ulimit -n 4096
$ ulimit -n
4096

Isso funciona. Isso não acontece:

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

Parece ser por causa do limite rígido:

$ ulimit -Hn
4096

Eu tentei adicionar essas linhas ao /etc/security/limits.conf:

*                hard    nofile          65535
*                soft    nofile          65535
root             soft    nofile          65535
root             hard    nofile          65535

Também incluí esta linha em /etc/pam.d/common-session e /etc/pam.d/common-session-noninteractive:

session required pam_limits.so

Desde que fiz isso, reiniciei meu computador. Mudanças no limits.conf não parecem afetar nada. O limite rígido ainda está preso em 4096, impedindo-me de ir mais alto. Como aumentar o limite de meus arquivos abertos?

Veja algumas informações adicionais de configuração:

$ cat /proc/sys/fs/file-max 
1624668
    
por mkasberg 17.04.2017 / 19:54

3 respostas

31

OK, finalmente percebi isso. Os limites que eu estava definindo em /etc/security/limits.conf estavam sendo aplicados, mas eles não estavam sendo aplicados ao login gráfico. Isso pode ser verificado assim em uma janela de terminal:

$ ulimit -n
4096
$ su mkasberg
Password:
$ ulimit -n
65535

Mais pesquisas me levaram a este relatório de erros , que me mostrou a questão direção correta. Para modificar o limite que é usado pelo shell de login, precisamos adicionar a seguinte linha ao /etc/systemd/user.conf:

DefaultLimitNOFILE=65535

Essa alteração funciona, mas afeta apenas o limite flexível. (Deixando nos limites com um limite rígido de 4096 ainda.) Para afetar o limite rígido também, devemos modificar o /etc/systemd/system.conf com a mesma mudança.

As alterações que fiz no /etc/pam.d não foram necessárias. Pelo menos no Ubuntu, isso já está funcionando. Além disso, não foi necessário alterar as configurações de root e * no limits.conf. Alterar os limites para mkasberg foi suficiente, pelo menos para o meu caso de uso.

Em resumo

Se você quiser aumentar o limite mostrado por ulimit -n , deverá:

  • Modifique /etc/systemd/user.conf e /etc/systemd/system.conf com a seguinte linha (isso cuida do login gráfico):

    DefaultLimitNOFILE=65535
    
  • Modifique /etc/security/limits.conf com as seguintes linhas (isto cuida do login não-GUI):

    mkasberg hard nofile 65535
    mkasberg soft nofile 65535
    
por 18.04.2017 / 16:34
3

Não é necessário alterar nada no arquivo /etc/security/limits.conf , ele será ignorado se você estiver usando o systemd.

(reproduzindo uma resposta modificada a outra pergunta na rede ...)

Uma alternativa para aqueles que preferem não editar os arquivos padrão /etc/systemd/system.conf e /etc/systemd/user/conf :

  1. crie um novo arquivo /etc/systemd/system.conf.d/limits.conf com este conteúdo:

    [Manager]
    DefaultLimitNOFILE=65535
    
  2. execute systemctl daemon-reexec como raiz

  3. faça logout e faça login novamente

  4. verifique seu novo limite com ulimit -n .

Consulte o systemd-system.conf manpage para obter detalhes.

    
por 12.05.2018 / 23:57
0

Usando o Ubuntu 17.04, recebi o limite rígido descrito:

[email protected]:~$ ulimit -Hn
4096

Eu poderia baixá-lo usando ulimit , mas não aumentá-lo, assim como a pergunta é descrita. ulimit manual descreve:

only root can increase the hard limit.

Por isso, tentei definir um limite superior em /etc/security/limits.conf da seguinte forma:

user hard nofile 9999

e um novo login como ssh localhost -l user me deu o novo limite:

[email protected]:~$ ulimit -Hn
9999

Espero que isso funcione para você também.

    
por 18.04.2017 / 02:50