Como definir ulimits para mongod?

8

Como definir ulimits para o mongodprocesso / usuário no CentOS?

Eu li a documentação oficial, mas ela não fornece instruções específicas do sistema operacional.

  • Preciso definir ulimit -u 64000e persistir após a reinicialização.

  • Estou executando o CentOS 5.5, embora esteja atualizando para 6.5 em breve.

  • Prefiro não modificar nenhum script instalado pelo gerenciador de pacotes

Tim
fonte

Respostas:

12

Modifique /etc/security/limits.confcom o que você precisa. Exemplo:

user soft nproc 64000

Esta linha definirá o número de processadores ( -u) para 64000 para "usuário". Os limites flexíveis / rígidos podem ser os mesmos (o soft permite picos enquanto o hard impede a desova).

Nathan C
fonte
Obrigado, mas depois de fazer isso e reiniciar o mongod cat /proc/{pid}/limitsnão mostra nenhuma alteração. É necessário fazer algo adicional para garantir que a conf seja lida?
Tim
1
Sim, reinicie o servidor. É definido pelo kernel.
Nathan C
7

A versão mais recente do script de inicialização do CentOS mongod (/etc/init.d/mongod) possui as configurações padrão incorporadas na opção de inicialização:

start()
{
  # Recommended ulimit values for mongod or mongos
  # See http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
  #
  ulimit -f unlimited
  ulimit -t unlimited
  ulimit -v unlimited
  ulimit -n 64000
  ulimit -m unlimited
  ulimit -u 32000

  echo -n $"Starting mongod: "
  daemon --user "$MONGO_USER" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch /var/lock/subsys/mongod
}

Se você deseja alterar os valores e não modificar o script, copie o script para /etc/init.d/mongod-custom, edite o script init personalizado, defina seus valores e altere chkconfig para usar mongod-custom em vez de mongod.

thaspius
fonte
6

Para adicionar à resposta de thaspius, os limites parecem estar definidos como ele descreve no script init, mas eu ainda estava recebendo o aviso

[initandlisten] ** WARNING: soft rlimits too low. rlimits set to 1024 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files.

Isso parece sugerir que o limite de arquivos definido no script init entrou em vigor, mas não o limite de processos. Também seguindo a resposta de Nathan C e adicionando

mongod soft nproc 64000

para /etc/security/limits.d/90-nproc.confe reiniciar o sistema resolvido a questão.

Se alguém é capaz de esclarecer por que isso era necessário, apesar de ter os valores no script init do mongodb, sou todo ouvidos!

user2050789
fonte
Mesmo aqui, por que a configuração "nproc" foi ignorada é um mistério para mim.
ostati
1

Faça essa alteração no /etc/security/limits.confarquivo. Defina os limites rígidos e flexíveis, e você deve ser bom.

John
fonte
Eu recomendo usar arquivos dentro /etc/security/limits.d/ao invés de mexer com o limits.confarquivo diretamente
Joshua Grigonis
1

Para que a mudança seja persistente, é necessário editar o script de init, por exemplo, no Red Hat 7, o script init tem a seguinte linha:

LimitNOFILE=64000

Você precisa adicionar o próximo:

LimitNPROC=32000

E, em seguida, reinicie o serviço.

Eu espero que isso ajude.

Ángel Orosa Rodríguez
fonte