Como definir o valor ulimit permanentemente?

17

No Debian Wheezy, ulimit -afornece:

open files                      (-n) 1024

Eu adiciono isso ao /etc/security/limits.conf

*                hard    nofile          64000

depois reinicie.

E ulimit -aainda fornece um número máximo de arquivos abertos de 1024. Alguém poderia lançar alguma luz sobre isso?

UTI
fonte
isso é possivelmente um host virtual?
Dennis Nolte
não, é um servidor mongodb
Icu

Respostas:

13

Opção 1: Você não definiu o limite de software mais alto também.

Solução possível:

em /etc/security/limits.conf add

* soft nofile 2048

teste com

ulimit -n 2048 

Opção dois: Você está logado como usuário e em algum arquivo "config" (perfil, bashrc, algo assim) o limite flexível é definido como um valor mais baixo.

Possível solução fe grep para ulimit na sua pasta etc e / ou na sua pasta pessoal.

Aviso: Dependendo da quantidade de arquivos / diretórios que você possui, convém considerar apenas diretórios / arquivos específicos

ps: há muitas perguntas semelhantes aqui que você pode querer ler.

Limite especialmente difícil vs suave

Leia aqui para uma possível outra solução que entra em mais detalhes Muitos arquivos abertos

Dennis Nolte
fonte
Na verdade, eu estava tentando definir apenas o limite rígido para 64000. Portanto, o limite flexível ainda estava em 1024. Agora, tentei definir um limite flexível para 64000 + rígido = 72000. Mas não funcionou. Eu tentei também "* - nofile 64000" e obtenho o mesmo resultado.
Icu
Depois de ter lido "Too Many Open Files", pensei um kernel 'estaria substituindo as configurações limits.conf mas: "fs.file-max = 4933738"
Icu
@Icu tentar as respostas deste um aswell: serverfault.com/questions/93234/... pode estar relacionado com o seu shell
Dennis Nolte
Adicionei 'session required pam_limits.so' ao /etc/pam.d/other e common-session, mas isso não ajuda ... Como alternativa, adicionei um 'ulimit -n' ao meu script init e ele funciona mas me pergunto por que não consigo obter os valores corretos no meu shell.
Icu
19

Há um erro no Debian. Para aumentar, ulimitvocê precisa adicionar isso ao /etc/pam.d/common-sessionarquivo:

session required pam_limits.so

e em /etc/security/limits.confadição:

*               soft    nofile          65535
*               hard    nofile          65535

Em seguida, reinicie o sistema.

jpyzio
fonte
1
não é necessário fazer nenhuma alteração no /etc/pam.d/common-sessionarquivo. ele trabalhou apenas adicionando as outras duas linhas para o limits.confarquivo :-)
Francesco Casula
Você não precisa reiniciar.
David Goodwin
Isso é brutal. No debian 7 agora, e isso não está funcionando. Não tenho certeza o que fazer :( - Eu poderia abrir uma nova pergunta
NiCk Newman
12
Estrondo. *curinga não funciona para root. Eu adicionei em rootvez de *, e está funcionando. Obrigado!
NiCk Newman
@FrancescoCasula - qual versão do Debian era essa? Apenas tentando descobrir se este é realmente um bug, e se ele ainda existe ...
UpTheCreek
0

No meu caso do Apache no Debian 10, o exemplo acima não ajudou, apesar de funcionar:

echo "APACHE_ULIMIT_MAX_FILES='ulimit -n 16384'" >> /etc/apache2/envvars
service apache2 restart

Eu verifiquei com:

cat /proc/$pid/limits

..where $pidé o ID do processo de um dos processos Apache.

Neil Stockbridge
fonte