Por que não é possível passar do máximo de 4096 arquivos abertos para usuários não root?

12

Não consigo aumentar o limite de nofile para usuários não-root no Ubuntu 14.04, apesar de seguir todas as respostas do StackExchange relacionadas a este problema. Até agora eu tenho:

$ cat /etc/security/limits.d/custom.conf
@www-data hard nofile 50000
@www-data soft nofile 50000
# even tried specifying the username directly:
myuser hard nofile 50000
myuser soft nofile 50000

$ grep 'limits' /etc/pam.d/common-session*
/etc/pam.d/common-session:session required        pam_limits.so
/etc/pam.d/common-session-noninteractive:session required        pam_limits.so

$ cat /proc/sys/fs/file-max
101232

Rebooted, logado e:

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

Ainda ainda parece ser um limite máximo de 4096 para usuários não-root.

    
por Caffeine Coma 09.03.2015 / 20:30

3 respostas

12

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

user@notebook:~$ ulimit -Hn 4096  

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

  

somente root pode aumentar o limite rígido

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:

user@notebook:~$ ulimit -Hn 9999

Espero que isso funcione para você também.

    
por TomTomTom 11.03.2015 / 00:43
4

Este artigo , acho que resolve o problema .

Basicamente, você deve usar o comando ulimit para aumentar os recursos disponíveis.

Por exemplo:

Use o seguinte comando para exibir o número máximo de descritores de arquivos abertos:

cat /proc/sys/fs/file-max

Para ver os valores de hardware e software, execute o comando da seguinte forma:

# ulimit -Hn
# ulimit -Sn

Para ver os valores de hardware e software para o usuário httpd ou oracle, execute o comando da seguinte forma:

# su - username

Para corrigir o número máximo de arquivos, você pode aumentar o número máximo de arquivos abertos definindo um novo valor na variável do kernel / proc / sys / fs / file-max da seguinte maneira (login como root):

# sysctl -w fs.file-max=100000

O comando acima força o limite para 100.000 arquivos. Você precisa editar o arquivo /etc/sysctl.conf e colocar a seguinte linha para que, após a reinicialização, a configuração permaneça como está. Para fazer isso, anexe uma diretiva de configuração da seguinte forma:

fs.file-max = 100000

Salve e feche o arquivo. Os usuários precisam fazer logout e efetuar login novamente para que as alterações entrem em vigor ou apenas digite o seguinte comando:

# sysctl -p

Verifique suas configurações com o comando:

# cat /proc/sys/fs/file-max

ou:

# sysctl fs.file-max

O procedimento acima define os limites dos descritores de arquivo (FD) do sistema, mas você pode limitar o usuário httpd (ou qualquer outro usuário) a limites específicos editando /etc/security/limits.conf file editando /etc/security/limits.conf e definindo os limites segue:

httpd soft nofile 4096
httpd hard nofile 10240

Em seguida, verifique-os por:

# su - httpd
$ ulimit -Hn
$ ulimit -Sn

Se você tiver o problema em outras distribuições do Linux, verifique o /etc/pam.d/login e certifique-se de ter pam_limits.so ativado, por exemplo,

session required pam_limits.so
    
por Brooke Fogg-Wolfe 09.03.2015 / 20:37
0

Se for um serviço, você pode tentar definir o limite em /etc/systemd/system/{ServiceName}.service add LimitNOFILE=65536

    
por Maicon Silva Pinto de Abreu Sa 07.07.2017 / 17:12

Tags