MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Pourquoi les performances de Mongodb sont-elles meilleures sous Linux que sous Windows ?

Premièrement :tous les systèmes de fichiers disponibles sur le serveur Windows 2008 sont très, très inefficaces. Par rapport à XFS ou ext4, ils sont jusqu'à 40 % plus lents lorsque les systèmes de fichiers Windows et Linux sont optimisés.

Deuxièmement :la latence peut être un problème. La pile réseau sur un système Linux actuel est tout simplement plus rapide que sur un serveur W2008.

Troisièmement :si vous avez un pare-feu en cours d'exécution sur votre boîte, la latence devient un problème encore plus important pour l'accès à distance. Alors que iptables de Linux est suffisamment rapide et efficace pour que la grande partie des appliances pare-feu repose dessus, les pare-feux disponibles pour Windows ne le sont pas, pour diverses raisons.

De plus :Windows n'est pas aussi efficace avec la RAM que Linux. MongoDB utilise autant de RAM que possible (jusqu'au point dont il a besoin), par exemple pour stocker des (copies de) fichiers d'index dans la RAM. Windows prend une part beaucoup plus importante de la RAM disponible qu'une machine Linux. Ainsi, les fichiers d'index peuvent être lus à partir du disque plutôt qu'à partir de la RAM, ce qui est beaucoup plus lent.

Conclusion :exécuter une base de données de production mongoDB sur un système Windows est une très mauvaise idée.

MODIFIER

Selon la demande dans les commentaires :

  • En ce qui concerne la vitesse du système de fichiers :Comparaison des performances d'E/S du système de fichiers :RedHat Enterprise 6 et Microsoft Windows Server 2012
  • En ce qui concerne l'utilisation inefficace de la RAM, vous voudrez peut-être la vérifier par vous-même. Quelle quantité de RAM un système Windows Server utilise-t-il lorsqu'il est inactif ? Comment cela se compare-t-il à l'inactivité d'un serveur Linux donné ? Soyons gentils et supposons que le serveur Windows n'a besoin que de 128 Mo pour son interface graphique - c'est 128 Mo gaspillés. Multiplié par 20, ce qui n'est pas une grosse taille de cluster, on parle de 2,5 Go - ce qui pourrait facilement constituer un serveur de configuration ou un arbitre, sinon plus. Et cela serait dépensé pour une interface graphique, pour un système qui en a rarement besoin, voire pas du tout. Selon les faits, vous voudrez peut-être lire Comparaison des performances du processeur et de la mémoire :Red Hat Enterprise Linux 6 vs Windows Server 2012
  • En ce qui concerne la vitesse de la pile réseau, il existe plusieurs sources, en voici deux auxquelles j'ai tendance à me référer :
    • Mesure des performances comparatives des piles TCP , plus vieux, mais on parle d'ordres de grandeur, ce qui au moins donne une idée
    • Comparaison des performances réseau :Red Hat Enterprise Linux 6 et Windows Server 2012

Vous avez peut-être reconnu que j'ai fait référence à trois rapports de Principled Technologies. Bien que je ne sois en aucun cas affilié à eux, à mon humble avis, ils ont fait un bon travail en comparant RHEL 6 et Windows Server 2012 en utilisant des références standard de l'industrie et en optimisant explicitement les deux systèmes d'exploitation pour la tâche en question ainsi qu'en utilisant des systèmes d'exploitation prêts à l'emploi.

On pourrait dire que cette comparaison ne prouve pas que toutes les distributions GNU/Linux sont plus rapides que Windows Server 2012, les fonctionnalités dont nous parlons sont celles fournies par le noyau Linux et ne sont généralement pas modifiées, il est donc prudent de supposer que des distributions similaires des résultats peuvent être attendus de toutes les distributions majeures.

Avec les avantages de performances en partie extrêmes de Linux (la pile TCP de Linux est jusqu'à près de 4 fois plus rapide que celle de Windows Server pour les messages de grande taille, ce qui a tendance à être le cas dans les applications de base de données), je renouvelle mon affirmation selon laquelle il est une très mauvaise idée™ pour exécuter une MongoDB de production sur un système Windows.