Eu preciso de nodejs e mongodb para manipular 5000 solicitações por segundo

4

Como o título sugeriu, eu preciso de nodejs e mongodb para manipular 5000 solicitações por segundo. Logo de cara que é. Nós vamos crescer para muitas vezes que eventualmente.

Meus pensamentos iniciais são colocar cada um em máquinas separadas, embora eu não tenha certeza se devo começar com máquinas pequenas e me preparar para expandir em breve, ou começar com máquinas maiores e expandir depois.

De qualquer forma, espero poder escalar esses dois, mas estou imaginando qual seria o gatilho de alto nível. Eu escalaria em CPU ou uso de memória? Se na CPU o que devo tentar manter o uso médio da CPU?

Ah, sim, eu vou comprar suporte do 10gen para que eles possam rever o meu modelo de documento e garantir que eu esteja armazenando os dados da maneira mais eficiente.

    
por talentedmrjones 28.09.2011 / 04:17

2 respostas

4

"De um modo geral", não há nenhum número no qual você deve manter sua CPU. Se você tiver um sistema quad-core e seu aplicativo estiver executando bem em uma média de carga de 12, mais energia será oferecida a você. Você realmente precisa testar e determinar essas coisas sozinho. Muito mais se reflete nas médias de carga da CPU do que apenas o que a CPU está fazendo.

    
por 28.09.2011 / 20:43
0

Vou deixar os ajustes básicos de desempenho, como renderização no lado do cliente, paralelismo, cache, nginx etc., nas suas habilidades de googling e pular para alguns exclusivos,

1. Desativar o Algoritmo de Nagle: Se você estiver familiarizado com a programação de rede em tempo real, reconhecerá esse algoritmo como um ajuste de soquete comum. Isso faz com que cada resposta deixe o servidor muito mais rápido.

O ajuste está disponível por meio da API node.js socket.setNoDelay , que é configurada em cada soquete da conexão COMET de longa pesquisa.

2. Pool de conexões do Mongodb: A criação de novas conexões autenticadas com o banco de dados é cara. Portanto, em vez de criar e destruir conexões para cada solicitação ao banco de dados, você deseja reutilizar as conexões existentes o máximo possível.

Você pode encontrar muitos outros ajustes de desempenho no airpair ou no meio, mas no seu caso, esses dois afetarão mais.

Observação: sua topologia de implantação e a estratégia de balanceamento de carga também farão uma diferença real. Eu diria, use um NGINX como RP na frente do seu servidor de nó e deixe-o lidar com todo o balanceamento de carga entre as várias instâncias do nó!

    
por 30.03.2016 / 10:02