Temos uma caixa do CentOS que estou tentando aumentar o número máximo de arquivos que um usuário pode abrir. Atualmente, quando corro ulimit -Sn
, recebo 1024
e ulimit -Hn
dá 4096
. Preciso desse número por volta de 6000.
Em que /etc/sysctl.conf
eu coloquei fs.file-max = 100000
. Em /etc/security/limits.conf
eu tenho o seguinte conjunto:
username soft nofile 6000
username hard nofile 65535
Eu desconectei e efetuei login novamente, username
mas ainda não estou vendo minhas alterações. O que preciso para alterar esse valor?
Tudo o que tenho /etc/security/limits.d
é 90-nproc.conf
. Também garanti que o ulimit não esteja sendo chamado no meu .bash_profile ou .bashrc.
Quando executo, sysctl -p
ele cospe as configurações desejadas e mostra o valor fs.file-max
desejado. Mas quando corro ulimit -Sn
, recebo 1048. Se eu tentar correr sysctl --system
, recebo error: Unknown parameter "--system"
.
Respostas:
Para forçar
/etc/sysctl.conf
a ser lido novamente, corrasysctl -p
.O arquivo
/etc/security/limits.conf
é lido pelos shells de login e você deve fechar as janelas das sessões ativas se estiver na GUI. Para logins remotos, entra em vigor no relog.fonte
fs.file-max
é o número máximo de arquivos abertos no sistema. É um limite rígido e não será refletido pelasulimit
chamadas no seu caso.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 reiniciar:
IMHO, o último método é o melhor, pois replica a ordem em que as configurações seriam aplicadas durante a inicialização (e, se você tiver um conflito, isso se tornará aparente).
Nota: Não tenho certeza de qual versão do CentOS você está usando, mas pelo menos 7 encontrei um problema em que, se o dracut reconstruir o initramfs por qualquer motivo (como ao instalar um novo módulo do kernel), ele será copiado o conteúdo de /etc/sysctl.* no initramfs, que será executado pelo systemd-sysctl durante essa fase, mesmo que você exclua posteriormente essas entradas do /etc/sysctl.conf.
No meu ambiente, editei o módulo systemd dracut para excluir o /etc/sysctl.* desse ambiente (pois 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.
fonte