Ajout section Mémoire

This commit is contained in:
whirigoyen 2023-07-11 11:43:06 +02:00
parent d344333b38
commit a017432b4c

View file

@ -199,6 +199,26 @@ $ mongosh admin -u mongoAdmin -p PASSWORD
Pour les accès aux bases, les utilisateurs sont stockés dans la collection _system.users_ propre à chaque base.
### Mémoire
La mémoire utilisée par Mongo se répartit en deux types :
* La mémoire résidente : celle nécessaire au stockage des bases de données, requêtes, indexes.
* La mémoire cache.
MongoDB n'a pas de plafonnement de la mémoire totale utilisée. Il considère qu'il est le seul service sur le serveurs (!).
Par défaut, il limite la taille de son cache à la moitié de la (RAM - 1G), avec un minimum de 256M. Par exemple, sur un serveur avec 6G, il limitera son cache à `(6-1)/2 = 2.5G`.
Le problème, c'est que si la mémoire résidente consomme la moitié de la RAM (ou plus), même poncuellement, on se retrouve avec des erreurs `tcmalloc: allocation failed` dans `/var/log/syslog` et d'autres service qui se font OOM kill.
Work in progress :
Solutions :
* Mauvaise ? Changer `storage.wiredTiger.engineConfig.cacheSizeGB`, car on ne sait pas jusqu'à combien la mémoire résidente peu aller (et du coup combien on peut laisser au cache).
* Bonne ? Définir les options systemd `MemoryHigh` (75% RAM) et `MemoryMax` (85% RAM) + `Restart=on-failure` en cas de OOM.
## Accès en CLI
Comme pour MySQL, on peut manipuler MongoDB en CLI en mode interactif avec la commande `mongosh`.