Primeiras etapas para dimensionar servidores para um aplicativo Ruby on Rails

4

Estou executando um aplicativo da web RoR em um servidor dual-core AMD Athlon 4450e com 8 GB de RAM e Ubuntu.

Ele está indo bem, recebendo picos de até 320 solicitações dinâmicas por minuto, além de lidar com todos os recursos, incluindo a exibição de alguns arquivos de vídeo maiores.

Eu tenho o Apache com o Passenger e o MySQL em execução no host.

O desempenho ainda é bastante consistente, mas estou vendo a média de carga começando a subir acima de 1 durante períodos de carga mais altos e a carga de CPU aumentando para a marca de 40 ou 50%.

Eu posso comprar um computador adicional e um sistema quad core com 8 GB de RAM compatível com meu orçamento.

Devo transformar a caixa atual no servidor de banco de dados e colocar o quad core na frente dele como um servidor web?

Eu seria melhor ter o quad core como um servidor de banco de dados e um servidor web e manter o dual core existente ao lado dele como outro servidor web?

Algum outro layout de servidor que eu deva considerar?

Aqui está um instantâneo do servidor sob carga:

carga do servidor http://img.skitch.com/20100208-jhk11btcb43yg4mhd75ecinqqr.png

Obrigado,

-Tim

    
por Tim Harding 08.02.2010 / 22:08

3 respostas

1

Não está quebrado, não conserte.

Como conselhos genéricos sobre as próximas etapas, você pode / deve dividir seus arquivos estáticos em nginx ou em um cdn e, em seguida, gastar algum tempo analisando suas consultas mysql para ver onde os índices ou pequenos ajustes podem ajudar.

Com um dualcore machine running rails você deve poder sustentar uma carga média de 2 a 3 sem nenhum impacto no usuário.

    
por 09.02.2010 / 01:59
0

Primeiro você precisa descobrir o que causa a carga da CPU - o banco de dados, ou o aplicativo apache / RoR.

Eu sugiro que você coloque a máquina quad-core como servidor db e deixe o dual-core como servidor web. Se você vir mais problemas com o servidor da Web, poderá sempre adicionar outro com o balanceamento de carga.

Mas, novamente, primeiro inspecione e veja qual é a carga atual.

    
por 08.02.2010 / 22:15
0

Eu configuraria tudo no novo computador já que a atualização é bastante significativa e usaria o antigo como um servidor de teste.

Se você superar o novo, também poderá configurar o aplicativo RoR no servidor antigo e usar o nginx para balancear a carga. A replicação do Mysql também pode ser uma opção, pelo menos para o valor de backup.

    
por 08.02.2010 / 22:17