Como diminuir o tamanho do servidor com pouca memória?

2

Estou tendo problemas com um dos meus aplicativos Rails, que roda em VPS de 365 MB, o que parece não ser muito. Quando há mais de 3-5 usuários ao mesmo tempo, ele fica sem memória e começa a usar swap, que é lento.

Quando olho para top , vejo que há muitas instâncias geradas do mysql (muito mais do que processos Rails). Isso é normal?

Como você recomenda a aplicação de redução de escala para ambientes com pouca memória?

Estou usando o Ubuntu 9.04, Apache2.2 com mod passage, MySQL 5.075 e Ruby 1.8.7

edit: Após suas sugestões, atualizei o VPS para 540MB, o que por enquanto parece ser suficiente. No entanto, eu sou apenas um aluno pobre, então não posso gastar muito dinheiro em algum projeto que estou fazendo principalmente para mim, até que ele comece a pagar pelo menos alguma coisa. >     

por Jakub Arnold 30.10.2009 / 23:50

4 respostas

2

Haverá vários threads do mysql, não processos. Algumas versões de "Top" e "ps" mostram encadeamentos como se fossem processos separados.

O MySQL pode ser ajustado o quanto você quiser. A melhor maneira de ajustá-lo é usar apenas um único mecanismo para todas as suas tabelas - se você estiver usando o InnoDB, use SOMENTE o InnoDB.

Em seguida, ajuste os buffers como achar melhor - os principais são o cache de chaves MyISAM e o buffer pool innodb. Se você estiver usando apenas MyISAM, desative o mecanismo innodb completamente com skip-innodb no my.cnf.

No que diz respeito ao Apache, execute o menor número de MaxClients que você puder; desative o keepalive ou defina o tempo limite muito baixo - as conexões keepalive continuarão atrapalhando um processo do Apache (pesado).

É claro que fazer qualquer uma dessas coisas pode ser prejudicial para o desempenho, então teste-a em um sistema que não seja de produção se você se preocupa com as regressões de desempenho.

Pode ser mais econômico apenas comprar mais memória RAM do que gastar seu tempo ajustando para uma caixa tão pequena. No nosso trabalho, cada desenvolvedor tem uma blade com 16G de ram apenas para fins de teste. Isso é considerado razoável e não muito caro.

    
por 31.10.2009 / 00:00
4

Você gastará muito tempo (e, portanto, dinheiro) mexendo nos parâmetros de ajuste para possivelmente produzir uma pequena economia de memória. Você ganhará muito mais dinheiro apenas atualizando a RAM do seu VPS.

    
por 31.10.2009 / 02:25
1

Você precisará pesquisar mais e descobrir exatamente o que está usando sua memória, quanto cada processo leva, procurar potenciais vazamentos e assim por diante. Mas meu conselho vai ecoar os outros: consiga mais memória RAM. 365MB é amendoim e não vai escalar nada. O problema é agravado pela sua escolha de estrutura - leia a experiência do Twitter aqui .

Outtake selecionado:

All the convenience methods and syntactical sugar that makes Rails such a pleasure for coders ends up being absolutely punishing, performance-wise. Once you hit a certain threshold of traffic, either you need to strip out all the costly neat stuff that Rails does for you (RJS, ActiveRecord, ActiveSupport, etc.) or move the slow parts of your application out of Rails, or both.It’s also worth mentioning that there shouldn’t be doubt in anybody’s mind at this point that Ruby itself is slow.

    
por 31.10.2009 / 12:52
1

lowendbox.com é um ótimo site digno de bookmark relacionado a este problema (otimizando servidores com pouca memória)

O que se segue não corresponde naturalmente à sua configuração existente, mas considere mudar para um httpd mais leve como o nginx och lighttpd. Qualquer um desses dois deve economizar muito ram, pelo menos por conexão HTTP estática. O passageiro está disponível para o nginx .

    
por 31.10.2009 / 16:04