Aumentando o ulimit no CentOS

16

Temos uma caixa do CentOS que estou tentando aumentar o número máximo de arquivos que um usuário pode abrir. Atualmente, quando executo ulimit -Sn , recebo 1024 e ulimit -Hn4096 . Eu preciso desse número em torno de 6000.

Em /etc/sysctl.conf , defini fs.file-max = 100000 . Em /etc/security/limits.conf , tenho o seguinte conjunto:

username soft nofile 6000
username hard nofile 65535

Eu fiz e efetuei o login como username , mas ainda não estou vendo minhas alterações. O que preciso para alterar este valor?

Tudo o que tenho em /etc/security/limits.d é 90-nproc.conf . Eu também assegurei que ulimit não está sendo chamado em meu .bash_profile ou .bashrc.

Quando eu executo sysctl -p , ele mostra as configurações que eu quero e mostra o valor para fs.file-max que eu quero. Mas quando executo ulimit -Sn , recebo 1048. Se eu tentar executar sysctl --system , obtenho error: Unknown parameter "--system" .

    
por tubaguy50035 15.10.2014 / 17:29

2 respostas

12

Para forçar a leitura de /etc/sysctl.conf , execute sysctl -p .

O arquivo /etc/security/limits.conf é lido por shells de login e você deve fechar as janelas de sessões ativas se estiver na GUI. Para logins remotos, entra em vigor no relog.

    
por 15.10.2014 / 19:59
3

Como outro pôster disse, você precisa ter o sysctl definido o valor no kernel em execução. Existem várias maneiras de definir o valor sem reinicializar:

sysctl -p /etc/sysctl.conf
sysctl -w fs.file-max=100000
sysctl --system

IMHO o último método é o melhor, já que ele replica a ordem em que as configurações seriam aplicadas durante a inicialização (e, portanto, se você tiver um conflito, ficará evidente).

Nota: Não sei qual versão do CentOS você está usando, mas pelo menos no 7 eu me deparei com um problema em que se o dracut recria o initramfs por algum motivo (como ao instalar um novo módulo do kernel) irá copiar o conteúdo de /etc/sysctl.* para o initramfs, que será então executado pelo systemd-sysctl durante essa fase, mesmo se você posteriormente excluir essas entradas do /etc/sysctl.conf.

No meu ambiente, editei o módulo dracut do systemd para excluir /etc/sysctl.* desse ambiente (já que essas configurações serão definidas assim que o rootfs for montado e o systemd-sysctl for executado novamente). É apenas uma pegadinha que você pode encontrar.

    
por 15.10.2014 / 21:12

Tags