sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Por qué el rendimiento de Mongodb es mejor en Linux que en Windows?

Primero:todos los sistemas de archivos disponibles en el servidor Windows 2008 son muy, muy ineficientes. En comparación con XFS o ext4, son hasta un 40 % más lentos cuando se optimizan los sistemas de archivos de Windows y Linux.

Segundo:la latencia puede ser un problema. La pila de red en un sistema Linux actual simplemente es más rápida que en un servidor W2008.

Tercero:si tiene un firewall ejecutándose en su caja, la latencia se convierte en un problema aún mayor para el acceso remoto. Mientras que las iptables de Linux es lo suficientemente rápido y eficiente como para que la mayor parte de los dispositivos de firewall se basen en él, los firewalls disponibles para Windows no lo son, por varias razones.

Además:Windows no es tan eficiente con la memoria RAM como lo es Linux. MongoDB usa la mayor cantidad de RAM posible (hasta el punto que necesita), por ejemplo, para almacenar (copias de) archivos de índice en la RAM. Windows ocupa una parte mucho mayor de la RAM disponible que una máquina Linux. Por lo tanto, los archivos de índice pueden leerse desde el disco que desde la RAM, que es mucho más lento.

En pocas palabras:es una Really Bad Idea™ ejecutar un mongoDB de producción en un sistema Windows.

EDITAR

Según la solicitud en los comentarios:

  • En cuanto a la velocidad del sistema de archivos:Comparación del rendimiento de E/S del sistema de archivos:RedHat Enterprise 6 frente a Microsoft Windows Server 2012
  • En cuanto al uso ineficiente de RAM, es posible que quieras comprobarlo por ti mismo. ¿Cuánta RAM usa un sistema Windows Server dado mientras está inactivo? ¿Cómo se compara esto con cualquier inactividad del servidor Linux? Seamos amables y supongamos que el servidor de Windows solo necesita 128 MB para su GUI:se desperdician 128 MB. Multiplicado por 20, que no es un tamaño de clúster grande, estamos hablando de 2,5 GB, lo que fácilmente podría constituir un servidor de configuración o un árbitro, si no más. Y esto se gastaría en una GUI, para un sistema que rara vez necesita una, si es que la necesita. Según los hechos concretos, es posible que desee leer Comparación del rendimiento de la CPU y la memoria:Red Hat Enterprise Linux 6 frente a Windows Server 2012
  • En cuanto a la velocidad de la pila de red, hay varias fuentes, aquí hay dos a las que tiendo a referirme:
    • Rendimiento comparativo medido de pilas de TCP , mayores, pero estamos hablando de órdenes de magnitud, lo que al menos da una idea
    • Comparación del rendimiento de la red:Red Hat Enterprise Linux 6 frente a Windows Server 2012

Es posible que haya reconocido que hice referencia a tres informes de Principled Technologies. Si bien no estoy afiliado a ellos de ninguna manera, en mi humilde opinión, hicieron un buen trabajo al comparar RHEL 6 y Windows Server 2012 mediante el uso de puntos de referencia estándar de la industria y la optimización explícita de ambos sistemas operativos para la tarea en cuestión, así como el uso de sistemas operativos listos para usar.

Se podría argumentar que esta comparación no prueba que todas las distribuciones de GNU/Linux sean más rápidas que Windows Server 2012, las características de las que estamos hablando son las proporcionadas por el Kernel de Linux y generalmente no se manipulan, por lo que es seguro asumir que similar se pueden esperar resultados de todas las distribuciones principales.

Con las ventajas de rendimiento en parte extremas de Linux (la pila TCP de Linux es casi 4 veces más rápida que la de Windows Server para mensajes de gran tamaño, lo que tiende a ser el caso en las aplicaciones de bases de datos), renuevo mi afirmación de que es una muy mala idea™ para ejecutar un MongoDB de producción en un sistema Windows.