Come impostare ulimits per mongod?


8

Come impostare ulimits per il mongodprocesso / utente su CentOS?

Ho letto la documentazione ufficiale ma non fornisce istruzioni specifiche per il sistema operativo.

  • Devo impostare ulimit -u 64000e ho bisogno di questo per persistere dopo il riavvio.

  • Sto usando CentOS 5.5 anche se presto passerò alla versione 6.5.

  • Preferirei non modificare alcuno script installato dal gestore dei pacchetti

Risposte:


12

Modifica /etc/security/limits.confcon ciò di cui hai bisogno. Esempio:

user soft nproc 64000

Questa riga imposterà il numero di processori ( -u) su 64000 per "utente". I limiti soft / hard possono essere gli stessi (soft consente picchi mentre hard impedisce la generazione).


Grazie, ma dopo aver fatto questo e aver riavviato mongod cat /proc/{pid}/limitsnon mostra alcun cambiamento. È necessario fare qualcosa in più per garantire la lettura della conf?
Tim

1
Sì, riavvia il server. È impostato dal kernel.
Nathan C,

7

La versione più recente dello script di avvio di CentOS mongod (/etc/init.d/mongod) ha le impostazioni predefinite integrate nell'opzione di avvio:

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 vuoi cambiare i valori e non modificare lo script, copia lo script in /etc/init.d/mongod-custom, quindi modifica lo script init personalizzato, imposta i tuoi valori e cambia chkconfig per usare mongod-custom anziché mongod.


6

Per aggiungere alla risposta di Thaspius, i limiti sembrano essere impostati come descrive nello script di init, ma stavo ancora ricevendo l'avvertimento

[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.

Ciò sembra suggerire che il limite di file definito nello script di init aveva avuto effetto, ma non il limite di processi. Anche seguendo la risposta e l'aggiunta di Nathan C.

mongod soft nproc 64000

per /etc/security/limits.d/90-nproc.confe riavviare il sistema ha risolto il problema.

Se qualcuno è in grado di far luce sul perché ciò fosse necessario nonostante abbia i valori nello script di mongodb init, sono tutto a posto!


lo stesso qui, perché l'impostazione "nproc" è stata ignorata è un mistero per me.
Ostati,

1

Apporta questa modifica nel /etc/security/limits.conffile. Imposta i limiti hard e soft e dovresti essere bravo.


Consiglierei di usare i file all'interno /etc/security/limits.d/piuttosto che scherzare limits.confdirettamente con il file
Joshua Grigonis,

1

Perché la modifica sia persistente, è necessario modificare lo script de init, ad esempio in Red Hat 7, lo script init ha la seguente riga:

LimitNOFILE=64000

Devi aggiungere il prossimo:

LimitNPROC=32000

E quindi riavviare il servizio.

Spero che questo possa essere d'aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.