Fazer o MongoDB funcionar para produção [fechada]

3

Eu fiz um teste simples do MongoDB no ambiente Windows. A coleção única de objetos com ID (int32) e Buffer (byte [4096]) estava sendo preenchida sequencialmente. Depois de atingir quase 15G (de 16G no total) de RAM, o ambiente tornou-se problemático. Alguns aplicativos foram mortos, a área de trabalho alterou sua resolução e, em seguida, parou completamente. Depois de um hard reboot eu encontrei muitos desses registros no mongo log:

VirtualProtect falhou (mcw) e: /Databases/+MongoDB/TestFS/TestFS.7 256400000000 4000000 errno: 1455 O arquivo de paginação é muito pequeno para que esta operação seja concluída.

MapViewOfFile failed e: /Databases/+MongoDB/TestFS/TestFS.26 errno: 1450 Existem recursos de sistema insuficientes para completar o serviço solicitado.

Além disso, o MongoDB falhou ao conectar-se mais (a qualquer banco de dados). O registro no diário foi ativado. Nenhum erro no log. Eu era capaz de curá-lo apenas excluindo o diário e banco de dados corrompido. Isso está longe do comportamento que eu gostaria de ver na produção, mas eu sei que há muitas instalações de produção existentes. Então, eu estou tentando entender, o que eu perdi ou fiz de errado.

    
por Stan 16.10.2011 / 11:52

1 resposta

6

Vamos dar uma olhada em como eu executei um cluster do MongoDB de produção (sim, cluster .. Você não quer apenas um servidor)

1) Use o Linux. A sério. É muito mais previsível para gerenciamento de memória e assim por diante do que o Windows é. Você também tem mais chances de encontrar pessoas que possam ajudá-lo a ajustar um servidor Mongo no Linux.

2) Dê muita memória RAM. RAM é barato. Acabei de especificar alguns servidores de nível de produção para o $ job e eles têm 36GB de ECC DDR3 rápido.

3) Dê discos rápidos. O SAS é bom, eu suspeito que o SSD pode ser ainda melhor, mas não testei especificamente isso.

4) Fragmento. Escolha uma chave de shard decente e crie shard em vários nós do MongoDB com base nisso.

5) Importante. Certifique-se de que você tenha um cluster de servidores que ainda possa executar um número de votos consensuais .

6) Realmente importante. Proteja-o. Altere o nome de usuário e a senha do administrador padrão e coloque-o atrás de um firewall.

Sério. Eu acho que você deveria dar uma olhada nos pontos acima, e também ler algumas dessas Implantações de Produção . 10gen fazem de tudo para disponibilizar muita documentação para o MongoDB, e eu suspeito que você não leu tudo isso em sua totalidade.

    
por 16.10.2011 / 12:24

Tags