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

Tim
la source

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

Nathan C
la source
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.

thaspius
la source
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!

user2050789
la source
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.

John
la source
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.

Ángel Orosa Rodríguez
la source