Comment optimiser son cluster MongoDB
Bonjour ici. Je travaille sur un projet MongoDB depuis un moment maintenant et j’ai fait face à plusieurs types de problèmes que j’ai réussi à résoudre. Le premier était la configuration du cluster (en utilisant un arbitre dans un « replica set »), j’ai déjà partagé le « comment » ici. Le cluster traite un grand nombre de données (120 Go par jour) et gère également beaucoup de requêtes via une API ou directement sur les routeurs. Après une semaine, nous avons commencé à avoir des problèmes de performance. Après quelques recherches, j’ai trouvé quelques paramètres qui peuvent être modifiés pour augmenter les performances et je suis sur le point de les partager dans cet article.
Nombre de fichiers ouverts sur le système de fichiers
MongoDB doit ouvrir beaucoup de fichiers sur le système de fichiers. C’est pourquoi vous devez surveiller ce paramètre pour vérifier s’il est correctement défini. En fonction de vos besoins, en augmentant ce paramètre sur chaque nœud du cluster, vous pouvez améliorer ses performances. Ce paramètre est défini au niveau du système de fichiers et non sur MongoDB.
wiredTigerCacheSizeGB
Ce paramètre est défini pour définir la taille maximale du cache interne que WiredTiger utilisera pour toutes les données. La valeur par défaut est 50% de (RAM – 1 Go) ou 256 Mo. Donc, si vous pouvez utiliser plus de 50% de votre RAM, en augmentant ce paramètre, vous pouvez augmenter considérablement les performances de votre cluster. Vous passez la valeur quand vous lancez le mongod en ajoutant ceci: --wiredTigerCacheSizeGB 100GB
si vous voulez le mettre à 100 Go par exemple. Vous devez définir ceci sur tous les « replicas set ».
maxConns
Ce paramètre limite le nombre de connexions simultanées que peut accepter mongod. Donc, si votre cluster traite beaucoup de requêtes simultanément, en augmentant ce paramètre, vous pouvez augmenter considérablement les performances de votre cluster (en réduisant le nombre de requêtes en attente). Vous pouvez définir ce paramètre sur chaque nœud de votre cluster. Comme le paramètre précédent, vous passez également ce paramètre lorsque vous lancez le mongod en ajoutant par exemple --maxConns 100
pour 100 connexions.
Pour l’instant, ce sont les paramètres que j’ai peaufinés sur mon cluster pour améliorer les performances. Vous pouvez consulter la documentation officielle de MongoDB pour plus d’informations et vous pouvez également laisser un commentaire si vous connaissez d’autres paramètres qui peuvent m’aider. Merci.