sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvorfor Mongodb ydeevne bedre på Linux end på Windows?

For det første:alle filsystemer, der er tilgængelige på Windows 2008-serveren, er meget, meget ineffektive. Sammenlignet med XFS eller ext4 er de op til 40 % langsommere, når både Windows- og Linux-filsystemerne er optimeret.

For det andet:latens kan være et problem. Netværksstakken på et nuværende Linux-system er simpelthen hurtigere end på en W2008-server.

For det tredje:Hvis du har en firewall kørende på din boks, bliver latency et endnu større problem for fjernadgang. Mens Linux' iptables er hurtig og effektiv nok, så den store del af firewall-apparater er baseret på det, er de firewalls, der er tilgængelige til Windows, ikke det af forskellige årsager.

Plus:Windows er ikke så effektivt med RAM, som Linux er. MongoDB bruger så meget RAM som muligt (op til det punkt, det har brug for), for eksempel til lagring af (kopier af) indeksfiler i RAM. Windows tager en meget større andel af den tilgængelige RAM end en Linux-maskine. Så indeksfiler kan læses fra disk end fra RAM, hvilket er størrelsesordener langsommere.

Nederste linje:det er en virkelig dårlig idé at køre en produktions-mongoDB på et Windows-system.

REDIGER

Som på anmodning i kommentarerne:

  • Med hensyn til filsystemhastigheden:Sammenligning af filsystem I/O-ydeevne:RedHat Enterprise 6 vs. Microsoft Windows Server 2012
  • Hvad angår det ineffektive RAM-forbrug, vil du måske selv tjekke det. Hvor meget RAM bruger et givet Windows Server-system i tomgang? Hvordan er dette sammenlignet med en given Linux-server i tomgang? Lad os være søde og antage, at Windows-serveren bare skal bruge 128M til sin GUI - det er 128MB spildt. Multipliceret med 20, hvilket ikke er en stor klyngestørrelse, taler vi om 2,5 GB – som sagtens kunne udgøre en konfigurationsserver eller arbiter, hvis ikke mere. Og dette ville blive brugt på en GUI, for et system, der sjældent har brug for en, hvis overhovedet. I henhold til hårde fakta vil du måske læse Sammenligning af CPU og hukommelsesydelse:Red Hat Enterprise Linux 6 vs Windows Server 2012
  • Med hensyn til netværksstakkens hastighed er der flere kilder, her er to, som jeg plejer at henvise til:
    • Målt sammenlignende ydeevne af TCP-stakke , ældre, men vi taler om størrelsesordener, som i det mindste giver en idé
    • Sammenligning af netværksydelse:Red Hat Enterprise Linux 6 vs Windows Server 2012

Du har måske erkendt, at jeg henviste til tre rapporter fra Principled Technologies. Selvom jeg ikke er tilknyttet dem på nogen måde, IMHO gjorde de et godt stykke arbejde med at sammenligne RHEL 6 og Windows Server 2012 ved at bruge industristandard benchmarks og eksplicit optimere begge OS'er til den pågældende opgave såvel som ved at bruge out of the box OS'er.

Man kan hævde, at denne sammenligning ikke beviser, at alle GNU/Linux-distributioner er hurtigere end Windows Server 2012, de funktioner, vi taler om, er dem, der leveres af Linux-kernen og normalt ikke rodes med, så det er sikkert at antage, at lignende resultater kan forventes fra alle større distributioner.

Med de til dels ekstreme ydeevnefordele ved Linux (TCP-stakken af ​​Linux' er så meget som næsten 4 gange så hurtig som Windows Servers for store meddelelsesstørrelser, hvilket plejer at være tilfældet i databaseapplikationer), fornyer jeg min påstand om, at det er en meget dårlig idé™ til at køre en produktions MongoDB på et Windows-system.



  1. mongodb flytte dokumenter fra en samling til en anden samling

  2. For loop in redis med nodejs asynkrone anmodninger

  3. Oprettelse af en database i Mongo:kan ikke oprette forbindelse, få forbindelse mislykkedes

  4. Første MongoDB Hosting DBaaS til at understøtte Azure Government for Public Sector