MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Por que o desempenho do Mongodb é melhor no Linux do que no Windows?


Primeiro:todos os sistemas de arquivos disponíveis no servidor Windows 2008 são muito, muito ineficientes. Comparados ao XFS ou ext4, eles são até 40% mais lentos quando os sistemas de arquivos Windows e Linux são otimizados.

Segundo:a latência pode ser um problema. A pilha de rede em um sistema Linux atual simplesmente é mais rápida do que em um servidor W2008.

Terceiro:se você tem um firewall rodando em sua caixa, a latência se torna um problema ainda maior para o acesso remoto. Enquanto o iptables do Linux é rápido e eficiente o suficiente para que grande parte dos dispositivos de firewall se baseie nele, os firewalls disponíveis para Windows não o são, por vários motivos.

Além disso:o Windows não é tão eficiente com a RAM quanto o Linux. O MongoDB usa o máximo de RAM possível (até o ponto necessário), por exemplo, para armazenar (cópias de) arquivos de índice na RAM. O Windows ocupa uma parcela muito maior da RAM disponível do que uma máquina Linux. Portanto, os arquivos de índice podem ser lidos do disco do que da RAM, o que é muito mais lento.

Conclusão:é uma ideia muito ruim ™ executar um mongoDB de produção em um sistema Windows.

EDITAR

Conforme pedido nos comentários:
  • Quanto à velocidade do sistema de arquivos:Comparando o desempenho de E/S do sistema de arquivos:RedHat Enterprise 6 vs. Microsoft Windows Server 2012
  • Quanto ao uso ineficiente de RAM, você pode verificar por si mesmo. Quanta RAM um determinado sistema Windows Server usa enquanto está ocioso? Como isso se compara a qualquer inatividade do servidor Linux? Vamos ser legais e assumir que o servidor Windows precisa apenas de 128M para sua GUI - são 128MB desperdiçados. Multiplicado por 20, que não é um tamanho grande de cluster, estamos falando de 2,5 GB – o que poderia facilmente compor um servidor de configuração ou árbitro, se não mais. E isso seria gasto em uma GUI, para um sistema que raramente precisa de uma, se é que precisa. De acordo com os fatos concretos, você pode ler Comparando desempenho de CPU e memória:Red Hat Enterprise Linux 6 vs Windows Server 2012
  • Quanto à velocidade da pilha de rede, existem várias fontes, aqui estão duas que costumo referir:
    • Desempenho comparativo medido de pilhas TCP , mais antigo, mas estamos falando de ordens de grandeza, o que pelo menos dá uma ideia
    • Comparando o desempenho da rede:Red Hat Enterprise Linux 6 versus Windows Server 2012

Você deve ter reconhecido que fiz referência a três relatórios da Principled Technologies. Embora eu não seja afiliado a eles de forma alguma, IMHO eles fizeram um bom trabalho ao comparar o RHEL 6 e o ​​Windows Server 2012 usando benchmarks padrão do setor e otimizando explicitamente ambos os sistemas operacionais para a tarefa em questão, bem como usando sistemas operacionais prontos para uso.

Pode-se argumentar que esta comparação não prova que todas as distribuições GNU/Linux são mais rápidas que o Windows Server 2012, os recursos de que estamos falando são fornecidos pelo Kernel Linux e geralmente não são manipulados, por isso é seguro supor que semelhantes resultados podem ser esperados de todas as principais distribuições.

Com as vantagens de desempenho em parte extremas do Linux (a pilha TCP do Linux é quase 4 vezes mais rápida que a do Windows Server para grandes tamanhos de mensagens, o que tende a ser o caso em aplicativos de banco de dados), renovo minha afirmação de que é uma ideia muito ruim ™ para executar um MongoDB de produção em um sistema Windows.