Comprendre l'utilisation de la mémoire MongoDB est crucial pour une bonne expérience d'hébergement MongoDB. Pour de meilleures performances, il est impératif de conserver votre ensemble de travail en mémoire. J'ai vu quelques suggestions selon lesquelles si vous utilisez des disques SSD, cela rend la mémoire moins importante. Le temps d'accès à la mémoire dynamique à accès aléatoire (DRAM) est de l'ordre de la nanoseconde, le temps d'accès au SSD est de l'ordre de la microseconde et le temps d'accès au disque dur est de l'ordre de la milliseconde. Les SSD ont donc encore du chemin à parcourir pour rattraper leur retard. avec mémoire.
MongoDB utilise des fichiers mappés en mémoire (MMF) pour mapper la base de données en mémoire. Les données sont périodiquement vidées sur le disque (évidemment, le mécanisme est beaucoup plus compliqué, mais c'est un sujet pour un autre article).
Une fois que votre serveur MongoDB est opérationnel, il est important de surveiller et de comprendre l'utilisation de la mémoire. Afin de surveiller nos serveurs MongoDB, vous pouvez utiliser la console de surveillance ScaleGrid MongoDB pour voir des métriques détaillées sur vos performances. Exécutez quelques exemples de charges de travail et établissez une ligne de base afin que vous puissiez comprendre quand quelque chose ne fonctionne pas normalement. Voici quatre compteurs importants qui vous aideront à surveiller votre utilisation de la mémoire MongoDB :
-
Mémoire
Il s'agit en fait de trois compteurs dans un graphique :
-
Mémoire résidente
Il s'agit de la quantité réelle de mémoire physique utilisée par le processus MongoDB.
-
Mémoire mappée
Il s'agit de la quantité de mémoire virtuelle utilisée par la progression de MongoDB pour mapper votre base de données en mémoire. Il s'agira généralement de la taille de votre base de données.
-
Mémoire virtuelle
Cela inclut la mémoire virtuelle pour l'ensemble du processus MongoDB. Si vous avez activé la journalisation, celle-ci sera généralement le double de la taille de votre mémoire mappée.
-
-
Mémoire virtuelle non mappée
Il s'agit de la quantité de mémoire virtuelle utilisée pour les données de comptabilité et non pour mapper les fichiers de données. Par exemple, chaque connexion consomme une certaine quantité de mémoire. Habituellement, ce compteur doit être assez bas - généralement moins de 1 Go.
-
Défauts de page
Il s'agit du nombre de fautes de page matérielles/seconde. Évidemment, vous voulez que ce nombre soit aussi bas que possible.
-
Erreur de page matérielle
Ceci est déclenché lorsque la page en question n'est pas dans la mémoire physique et doit être extraite du disque.
-
Défaut de page logicielle
Cela se produit lorsque la page réside ailleurs dans la mémoire ou est dans un état de transition.
-
-
B-tree (indice manqué)
Un échec d'index est deux fois plus inefficace, car il entraîne deux lectures de disque, l'une pour lire l'entrée d'index et l'autre pour lire le document. Le compteur B-tree suit le nombre d'échecs d'index. C'est un autre endroit où vous voudrez établir une ligne de base pour repérer tout schéma inhabituel. Utilisez la commande .explain() pour vérifier les plans de requête pour vos requêtes courantes.
Un autre aspect important de la gestion de la mémoire dans MongoDB est de comprendre votre « ensemble de travail ». Dans notre prochain article, nous examinerons comment déterminer le jeu de travail pour votre base de données.