sql >> Databáze >  >> NoSQL >> MongoDB

Proč je výkon Mongodb lepší v Linuxu než ve Windows?

Za prvé:všechny souborové systémy dostupné na serveru Windows 2008 jsou velmi, velmi neefektivní. Ve srovnání s XFS nebo ext4 jsou až o 40 % pomalejší, když jsou optimalizovány systémy souborů Windows i Linux.

Za druhé:Problémem může být latence. Síťový zásobník na současném systému Linux je jednoduše rychlejší než na serveru W2008.

Za třetí:pokud máte na svém boxu spuštěný firewall, stává se latence pro vzdálený přístup ještě větším problémem. Zatímco iptables Linuxu je dostatečně rychlý a efektivní, takže na něm je založena velká část firewallových zařízení, firewally dostupné pro Windows z různých důvodů nejsou.

Plus:Windows není tak efektivní s RAM jako Linux. MongoDB využívá tolik paměti RAM, kolik je jen možné (do té míry, kolik potřebuje), například pro ukládání (kopií) indexových souborů v paměti RAM. Windows zabírá mnohem větší část dostupné paměti RAM než počítač s Linuxem. Indexové soubory tedy mohou být čteny z disku než z RAM, což je řádově pomalejší.

Sečteno a podtrženo:Spustit produkční mongoDB na systému Windows je opravdu špatný nápad™.

UPRAVIT

Podle požadavku v komentářích:

  • Pokud jde o rychlost souborového systému:Porovnání I/O výkonu souborového systému:RedHat Enterprise 6 vs. Microsoft Windows Server 2012
  • Pokud jde o neefektivní využití paměti RAM, možná budete chtít sami zkontrolovat. Kolik paměti RAM používá daný systém Windows Server při nečinnosti? Jak se to srovnává s jakýmkoli daným linuxovým serverem v nečinnosti? Buďme slušní a předpokládejme, že Windows server potřebuje pouze 128 milionů pro své grafické uživatelské rozhraní - je to 128 MB promarněných. Vynásobeno 20, což není velká velikost clusteru, mluvíme o 2,5 GB – což by mohlo snadno tvořit konfigurační server nebo arbitr, ne-li více. A to by se utratilo za GUI pro systém, který ho potřebuje jen zřídka, pokud vůbec. Pokud jde o tvrdá fakta, možná si budete chtít přečíst Porovnání výkonu CPU a paměti:Red Hat Enterprise Linux 6 vs Windows Server 2012
  • Pokud jde o rychlost síťového zásobníku, existuje více zdrojů, zde jsou dva, které mám tendenci odkazovat:
    • Měřený komparativní výkon zásobníků TCP , starší, ale bavíme se o řádech, což alespoň dává představu
    • Porovnání výkonu sítě:Red Hat Enterprise Linux 6 vs Windows Server 2012

Možná jste poznali, že jsem odkazoval na tři zprávy společnosti Principled Technologies. I když s nimi nejsem žádným způsobem spojen, IMHO odvedli dobrou práci při porovnávání RHEL 6 a Windows Server 2012 pomocí standardních srovnávacích testů a explicitně optimalizovali oba operační systémy pro danou úlohu a také pomocí operačních systémů připravených z krabice.

Někdo by mohl namítnout, že toto srovnání nedokazuje, že všechny distribuce GNU/Linux jsou rychlejší než Windows Server 2012, funkce, o kterých mluvíme, jsou funkce poskytované linuxovým jádrem a obvykle se s nimi nehraje, takže lze s jistotou předpokládat, že podobné výsledky lze očekávat od všech hlavních distribucí.

S částečně extrémními výkonnostními výhodami Linuxu (zásobník TCP Linuxu je až téměř 4krát rychlejší než Windows Server pro velké velikosti zpráv, což bývá případ databázových aplikací), obnovuji své tvrzení, že je velmi špatný nápad™ provozovat produkční MongoDB na systému Windows.



  1. Nelze se připojit k Redis na 127.0.0.1:6379:Připojení odmítnuto s homebrew

  2. MongoDB deleteOne()

  3. jak mohu předat nekonečno do redis z pythonu?

  4. Co je pole __v v Mongoose