Qual é a diferença entre configurar os limites do arquivo aberto em /etc/sysctl.conf vs /etc/security/limits.conf?

5

Eu li duas maneiras separadas de aumentar a contagem de arquivos abertos permitidos (estou tentando modificar para o root, se isso for importante).

Uma maneira é atualizar as configurações em /etc/security/limits.conf com algo como:

*                soft    nofile          500000

*                hard    nofile          500000

root             soft    nofile          500000

root             hard    nofile          500000

Para fazer configurações para o shell ativo, parece que você pode fazer apenas ulimit -n 500000 , o que não exigiria uma reinicialização ou o logout / login, mas pode exigir a reinicialização dos serviços (?).

A outra opção é atualizar /etc/sysctl.conf :

echo 'fs.file-max = 500000' >> /etc/sysctl.conf

Para fazer configurações para o shell ativo, podemos fazer sysctl -p e verificar com sysctl fs.file-max .

Então, minha pergunta é: qual é a diferença? Existe um? Estou em Ubuntu 14.04.2 LTS

    
por MrDuk 18.07.2017 / 19:01

1 resposta

6

A diferença é o escopo e como ele é aplicado. Os limites de arquivos abertos definidos por meio de sysctls aplicam-se a todo o sistema, enquanto os limites definidos por meio de /etc/security/limits.conf se aplicam somente a itens que atendem aos critérios especificados lá. A outra diferença principal é que /etc/security/limits.conf limites são aplicados via ulimit e, portanto, podem ser alterados mais facilmente, enquanto o limite de sysctl está essencialmente configurando um limite de alocação de memória no próprio kernel.

Como regra geral, você quase sempre deseja usar /etc/security/limits.conf , mesmo que esteja definindo limites globais com a correspondência de curinga, pois é um pouco mais confiável e as coisas geralmente falham mais facilmente quando atingidas com ulimit restrições que atingir os limites de alocação de memória do kernel.

    
por 18.07.2017 / 19:07