sql >> データベース >  >> NoSQL >> MongoDB

なぜMongodbのパフォーマンスがWindowsよりもLinuxの方が優れているのですか?

    まず、Windows 2008サーバーで使用できるすべてのファイルシステムは、非常に非効率的です。 XFSまたはext4と比較すると、WindowsとLinuxの両方のファイルシステムが最適化されている場合、最大40%遅くなります。

    2番目:レイテンシーが問題になる可能性があります。現在のLinuxシステムのネットワークスタックは、W2008サーバーよりも単純に高速です。

    3番目:ボックスでファイアウォールを実行している場合、リモートアクセスの遅延はさらに大きな問題になります。 Linuxのiptables は十分に高速で効率的であるため、ファイアウォールアプライアンスの大部分はそれに基づいていますが、さまざまな理由から、Windowsで使用できるファイアウォールはそうではありません。

    プラス:WindowsはLinuxほど効率的ではありません。 MongoDBは、たとえばインデックスファイル(のコピー)をRAMに格納するために、可能な限り多くのRAMを(必要なポイントまで)使用します。 Windowsは、Linuxマシンよりも利用可能なRAMのはるかに大きなシェアを占めます。そのため、インデックスファイルはRAMよりもディスクから読み取られる可能性があります。これは桁違いに遅くなります。

    結論:Windowsシステムで本番環境のmongoDBを実行するのは本当に悪いアイデア™です。

    編集

    コメントのリクエストに従って:

    • ファイルシステムの速度について:ファイルシステムのI / Oパフォーマンスの比較:RedHatEnterprise6とMicrosoftWindowsServer 2012
    • 非効率的なRAMの使用については、自分で確認することをお勧めします。特定のWindowsServerシステムがアイドリング中に使用するRAMの量はどれくらいですか?これは、特定のLinuxサーバーのアイドリングとどのように比較されますか?いい感じにしましょう。WindowsサーバーのGUIには128Mが必要であり、128MBが無駄になっていると仮定します。大きなクラスターサイズではない20を掛けると、2.5 GBについて話します。これは、構成サーバーまたはアービターを簡単に構成できます。そして、これはGUIに費やされることになります。これは、GUIが必要になることはほとんどないシステムの場合です。確かな事実として、 CPUとメモリのパフォーマンスの比較:Red Hat EnterpriseLinux6とWindowsServer2012の比較をお読みください。
    • ネットワークスタックの速度に関しては、複数のソースがあります。ここに、私が参照する傾向がある2つのソースがあります。
      • TCPスタックの測定された比較パフォーマンス 、古いですが、私たちは桁違いに話しているので、少なくともアイデアが得られます
      • ネットワークパフォーマンスの比較:Red Hat EnterpriseLinux6とWindowsServer2012

    PrincipledTechnologiesによる3つのレポートを参照したことをご存知かもしれません。私は彼らとはまったく関係がありませんが、IMHOは、業界標準のベンチマークを使用し、問題のタスクに対して両方のOSを明示的に最適化し、すぐに使用できるOSを使用することで、RHEL6とWindowsServer2012を比較する上で優れた成果を上げました。

    この比較は、すべてのGNU/LinuxディストリビューションがWindowsServer2012よりも高速であることを証明するものではないと主張する人もいるかもしれません。ここで説明している機能は、Linuxカーネルによって提供される機能であり、通常はいじられていないため、類似していると見なすのは安全です。結果はすべての主要なディストリビューションから期待できます。

    Linuxの部分的に極端なパフォーマンス上の利点(LinuxのTCPスタックは、データベースアプリケーションの場合によくある大きなメッセージサイズのWindows Serverのほぼ4倍の速度です)で、私はそれがは、Windowsシステムで本番のMongoDBを実行するためのVeryBadIdea™です。



    1. Meteorドキュメントのメッセージカウントの例はどのように機能しますか?

    2. MongoDBのバックアップと復元

    3. Meteorアプリ間でMongoDBコレクションを共有するにはどうすればよいですか?

    4. Redis Sorted Setのポップメンバーをサポートする良い方法はありますか?