La base Mongodb utilisé est la version 3.0.15. Elle est livrée avec deux moteurs de données:
Seul le moteur Wired Tiger possède un paramètre pour limiter sa consommation mémoire.
| Si vous avez encore le moteur MMapv1, il est possible de procéder à une migration de données en suivant une des procédure de la page Migration MMapV1 vers Wired Tiger |
Vous pouvez exécuter la commande suivante pour connaitre le moteur de données de MongoDB :
mongo shinken --quiet --eval "print(db.serverStatus().storageEngine.name)" |
Par défaut la consommation mémoire de MongoDB utilisant le moteur Wired Tiger va monter jusqu'à 50% de la mémoire physique du serveur.
Ces données sont gardées en cache pour améliorer les performances de la base de données, et éviter de devoir faire des lectures disques qui sont nécessairement plus lentes qu'une lecture en mémoire (même avec des disques SSD). Si ces données ont été lues au moins une fois, ceci ne signifie pas qu'elles sont encore utiles, et qu'elles vont être relues dans le futur:
L'objectif de cette page est de modifier la taille du cache afin de limiter cette partie perdue, sans perdre en performance.
La modification de la limite de la taille maximum du cache se fait dans le fichier /etc/mongod.conf en rajoutant ( attention à l'indentation ):
storage: wiredTiger: engineConfig: cacheSizeGB: 20 |
Ici ceci va limiter la taille maximum du cache de MongoDB à 20Go ( c'est exprimé en Gigat Octets ).
A noter que si la limite est inférieure à 1Go, il faut modifier la syntaxe:
storage: wiredTiger: engineConfig: configString : cache_size=256M |
Pour que ce soit pris en compte, il faut redémarrer le démon mongod ( les démons utilisant la base de données doivent être éteint avant ):
/etc/init.d/mongod stop /etc/init.d/mongod start |
Il est important de noter que MongoDB sera un peu plus gros que 20Go, car ici on ne peux limiter que la taille de son cache de données, mais il a toujours besoin de ses données de travail, ses requêtes en cours, etc. Cette consommation additionnelle est cependant raisonnable, et la consommation globale du processus mongod ne sera que légèrement plus élevé que 20Go. |
Limiter la taille du cache de données peux avoir un impact sur les performances de la base de données. MongoDB ne possède pas d'indicateur nous permettant de tailler à l'avance au plus juste la bonne taille du cache, ou de se redimensionner dynamiquement ( comme le pourrait une base Oracle par exemple ).
Nous vous recommandons donc:
Vous pouvez utiliser l'indicateur %util du check Disks Stats SSH ( voir page Disks Stats SSH )du pack de supervision Linux pour cela par exemple:
|