Comment définir les ulimits pour mongod?


8

Comment définir des ulimits pour le mongodprocessus / utilisateur sur CentOS?

J'ai lu la documentation officielle mais elle ne fournit pas d'instructions spécifiques au système d'exploitation.

  • J'ai besoin de régler ulimit -u 64000et j'ai besoin que cela persiste après le redémarrage.

  • J'utilise CentOS 5.5, mais je passerai bientôt à 6.5.

  • Je préfère ne pas modifier les scripts installés par le gestionnaire de paquets

Réponses:


12

Modifiez /etc/security/limits.confavec ce dont vous avez besoin. Exemple:

user soft nproc 64000

Cette ligne définira le nombre de processeurs ( -u) à 64000 pour "utilisateur". Les limites molles / dures peuvent être les mêmes (molles autorisent les pointes tandis que les dures empêchent le frai).


Merci, mais après avoir fait cela et redémarré mongod cat /proc/{pid}/limitsne montre aucun changement. Faut-il faire quelque chose de plus pour s'assurer que la conf est lue?
Tim

1
Oui, redémarrez le serveur. Il est défini par le noyau.
Nathan C

7

La version la plus récente du script de démarrage de CentOS mongod (/etc/init.d/mongod) a les paramètres par défaut intégrés dans l'option de démarrage:

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
}

Si vous souhaitez modifier les valeurs sans modifier le script, copiez le script dans /etc/init.d/mongod-custom, puis modifiez le script d'initialisation personnalisé, définissez vos valeurs et modifiez chkconfig pour utiliser mongod-custom au lieu de mongod.


6

Pour ajouter à la réponse de thaspius, les limites semblent être fixées comme il le décrit dans le script init, mais je recevais toujours l'avertissement

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

Cela semble suggérer que la limite de fichiers définie dans le script init a pris effet, mais pas la limite des processus. En suivant également la réponse de Nathan C et en ajoutant

mongod soft nproc 64000

pour /etc/security/limits.d/90-nproc.confet le redémarrage du système a résolu le problème.

Si quelqu'un est capable de faire la lumière sur la raison pour laquelle cela était nécessaire malgré les valeurs dans le script d'init mongodb, je suis tout à fait à l'écoute!


même ici, pourquoi le paramètre "nproc" a été ignoré est un mystère pour moi.
Ostati

1

Apportez cette modification dans le /etc/security/limits.conffichier. Fixez des limites strictes et souples, et vous devriez être bon.


Je recommanderais d'utiliser des fichiers à l'intérieur /etc/security/limits.d/plutôt que de jouer avec le limits.conffichier directement
Joshua Grigonis

1

Pour que la modification soit persistante, vous devez modifier le script de init, par exemple, dans Red Hat 7, le script init a la ligne suivante:

LimitNOFILE=64000

Vous devez ajouter le suivant:

LimitNPROC=32000

Et puis redémarrez le service.

J'espère que ça aide.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.