Servidor MongoDB remoto ou local?

1

Estou no Linode de 1 GB (VPS) com o MongoDB + Apache.

O MongoDB tem mais de 1,5 milhões de registros. Várias instâncias do script, das quais o serviço depende totalmente, causam mais de 50 conexões ativas e cerca de 50 consultas por segundo.

Meu free -m output

             total       used       free     shared    buffers     cached
Mem:           995        974         21          0          4        823
-/+ buffers/cache:        145        849
Swap:          511         79        432

Agora, o script precisa de ~ 17MB para cada instância (já otimizado) e, como eu disse, várias instâncias dele são executadas. Existe uma enorme diferença na memória cache livre (849 MB!) E na memória livre real (21 MB). Eu não posso executar instâncias do script PHP, eu recebo um erro que a alocação de memória falha.

A maior parte da memória é usada pelo MongoDB e também causa alto uso da CPU, 250+ % . Isso é inútil, eu poderia executar até mesmo muitas instâncias do meu script PHP dentro de 849 MB. Eu quero saber se será melhor para mim hospedar meu MongoDB remotamente (eu prefiro o MongoHQ). Eles têm um plano de US $ 15 / mês que é justo para mim. Eu poderia fazer o downgrade para o linode de 768 MB, o que será suficiente sem que o MonogDB seja executado nele.

Mas, quais são os contras de usar um banco de dados hospedado remotamente? Mais de 50 conexões e ~ 50 consultas por segundo? Haverá problemas de largura de banda a seguir.

Qualquer ajuda é muito apreciada.

    
por kapeels 31.03.2011 / 06:45

1 resposta

1

Se você for executar o banco de dados remotamente, execute-o no mesmo segmento de rede que seus servidores de aplicativos ou, pelo menos, no mesmo datacenter.

Mesmo se você obtiver baixa latência (ish), como < 10 ms, que podem afetar suas consultas dependendo do tipo de carga de dados que você tem.
Além disso, você acaba adicionando outro ponto de falha ao seu sistema, a comunicação entre seus servidores de aplicativos e servidores de banco de dados pode falhar. O MongoDB não usa nenhuma criptografia em seu protocolo e seus dados estarão em execução entre deus sabe quantos saltos, a menos que você o faça de alguma forma. E, como você apontou, há o uso da largura de banda. No geral, sugiro que você obtenha outro nó para executar seu banco de dados, mas no mesmo local do seu servidor de aplicativos.

    
por 31.03.2011 / 06:57