Ubuntu 18.04 passo a passo
Espero que tudo isso ajude, por muito tempo, mas funciona (com provas)
Me deparei com esta discussão enquanto instalava o MongoDb no Ubuntu 18.04
https://posidev.com/blog/2009/06/04/set-ulimit-parameters-on-ubuntu/
Como você pode ver, é bastante antigo, mas funciona para mim.
Aqui está o que eu fiz.
Configurações recomendadas do MongoDb ( https://docs.mongodb.com/manual/reference/ulimit/#review-and-set-resource-limits )
- -f (tamanho do arquivo): ilimitado
- -t (tempo da CPU): ilimitado
- -v (memória virtual): ilimitado [1]
- -l (tamanho da memória bloqueada): ilimitado
- -n (arquivos abertos): 64000
- -m (tamanho da memória): ilimitado [1] [2]
- -u (processos / threads): 64000
Verifique meus limites atuais
ubuntu @ isdb-stage: ~ $ ulimit -a
tamanho do arquivo principal (blocos, -c) 0
tamanho dos dados seg (kbytes, -d) ilimitado
prioridade de planejamento (-e) 0
tamanho do arquivo (blocos, -f) ilimitado
sinais pendentes (-i) 7873
memória bloqueada máxima (kbytes, -l) 16384
tamanho máximo de memória (kbytes, -m) ilimitado
abrir arquivos (-n) 1024
tamanho do canal (512 bytes, -p) 8
Filas de mensagens POSIX (bytes, -q) 819200
prioridade em tempo real (-r) 0
tamanho da pilha (kbytes, -s) 8192
tempo da CPU (segundos, -t) ilimitado
processos máximos de usuários (-u) 7873
memória virtual (kbytes, -v) ilimitada
bloqueios de arquivo (-x) ilimitados
Anote o que exige mudanças
- tamanho da memória bloqueada , precisa ser definido como ilimitado.
- arquivos abertos , precisa ser definido como 64000
- processos / threads * , precisa ser definido como 64000
O que o ubuntu diz sobre como alterar esses limites?
$ man limits.conf
NOME
limits.conf - arquivo de configuração para o módulo pam_limits
DESCRIÇÃO
O módulo pam_limits.so aplica limites ulimit, boa prioridade e número de sessões simultâneas de login às sessões de login do usuário. Esta descrição da sintaxe do arquivo de configuração se aplica ao
arquivo /etc/security/limits.conf e * .conf no diretório
Diretório /etc/security/limits.d.
- Parece bastante claro, edite o arquivo /etc/security/limits.conf. Ok, vamos descobrir isso ....
Aqui está o início desse arquivo, e veja ele ainda tem instruções, é claro, lembre-se de que este é um código aberto escrito pelos mocinhos! :)
vi /etc/security/limits.conf
# /etc/security/limits.conf
#Cada linha descreve um limite para um usuário no formato:
#
#Onde:
# pode ser:
# - um nome de usuário
(Veja você mesmo o arquivo, se quiser obter mais detalhes)
- Finalmente, faça as alterações. Como o MongoDb é executado como grupo e usuário do mongodb, seria uma boa ideia aumentar apenas os limites desse usuário. Eu já vi '*' usado aqui e ali, para mim, isso é um risco à segurança. Dá a todos e a todos no servidor esses limites, que podem ser usados para maximizar seu servidor. Então, vamos torná-los apenas para o usuário do mongodb.
Aqui estão as minhas alterações: -
mongodb soft memlock ilimitado
mongodb hard memlock unlimited
mongodb soft nofile 64000
mongodb hard nofile 64000
mongodb soft nproc 64000
mongodb hard nproc 64000
Finalmente, finalmente, lembre-se disso na entrada man limits.conf.
limits.conf - arquivo de configuração para o módulo pam_limits
Melhor garantir que o módulo pam_limits esteja carregado, para que tudo isso limite funcione. Para fazer isso, edite /etc/pam.d/common-session. Claro que isso também está na página do manual.
sudo vi /etc/pam.d/common-session
# Adicione isso para garantir que o pam_limits.so esteja carregado.
sessão necessária pam_limits.so
Uma reinicialização mostrará que os limites (para o usuário mongodb) foram aplicados. Se você os aplicou usando '*', poderá verificar sem precisar alternar para o usuário mongodb. Basta executar este comando.
$ ulimit -a
tamanho do arquivo principal (blocos, -c) 0
tamanho dos dados seg (kbytes, -d) ilimitado
prioridade de planejamento (-e) 0
tamanho do arquivo (blocos, -f) ilimitado
sinais pendentes (-i) 7873
memória máxima bloqueada (kbytes, -l) ilimitada
tamanho máximo de memória (kbytes, -m) ilimitado
abrir arquivos (-n) 64000
tamanho do canal (512 bytes, -p) 8
Filas de mensagens POSIX (bytes, -q) 819200
prioridade em tempo real (-r) 0
tamanho da pilha (kbytes, -s) 8192
tempo da CPU (segundos, -t) ilimitado
processos máximos de usuários (-u) 64000
memória virtual (kbytes, -v) ilimitada
bloqueios de arquivo (-x) ilimitados
Como você pode ver, todos os limites, de maneira irrepreensível, estavam nos limites que queríamos.