Finalisation doc mémoire

This commit is contained in:
whirigoyen 2023-07-25 10:35:03 +02:00
parent 50cea27c83
commit 4373aa9e41

View file

@ -210,14 +210,26 @@ MongoDB n'a pas de plafonnement de la mémoire totale utilisée. Il considère q
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.
Le problème, c'est que si la mémoire résidente consomme la moitié de la RAM (ou plus), même ponctuellement, 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 :
Dans ce cas, on peut limiter le processus avec les cgroups dans Systemd :
Solutions :
~~~
# systemctl edit mongod.service
[Service]
Restart=always
MemoryHigh=xG # RAM * 0.7
MemoryMax=xG # RAM * 0.8
~~~
~~~
# systemctl restart mongod.service
# systemctl status mongod.service
● mongod.service - MongoDB Database Server
(…)
Memory: 1G (high: 4.4G max: 5G)
~~~
* 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