Executando o aplicativo Ruby on Rails no Apache + Passenger == para muita memória

4

Estou executando o redmine (um aplicativo RoR) no meu servidor usando o passageiro / Apache 2.2. O passageiro e o rubi estão usando muita memória.

Existe uma maneira mais eficiente de executar a redmine / ruby?

Eu só preciso de suporte a meia dúzia de usuários de minas vermelhas. Quero continuar usando o Apache, mas estou aberto a todas as sugestões que não são "use nginx / lighttpd".

(Os dados a seguir são de um VPS de 512 MB, então o Ruby está usando mais de 128 MB apenas para redminar)

user ....... %mem   ....... process
-----------------------------------
www-data ... 13.6   0:00.65 ruby1.8
www-data ... 12.2   0:04.86 ruby1.8

www-data ...  9.4   0:04.15 apache2
www-data ...  9.0   0:13.94 apache2
www-data ...  3.2   0:00.27 apache2

root     ...  2.5   0:00.23 apache2 
root     ...  1.9   0:01.19 ruby1.8 

Então, o que é melhor para mim do que o Passenger?

Obrigado por seus pensamentos !!

    
por Rich 30.05.2009 / 05:26

5 respostas

6

Você pode configurar quantos Rails processam o apache / passageiro. Para o seu tamanho (3 solicitações simultâneas) você deve estar bem com 2 processos de trilhos:

Defina isso na configuração do seu apache:

PassengerMaxPoolSize 2
PassengerMaxInstancesPerApp 2

O MaxPoolSize determina quantas instâncias podem ser iniciadas ao máximo, o MaxInstancesPerApp determina quantas instâncias cada aplicativo da Web pode ter.

Você pode querer brincar com:

PassengerPoolIdleTime 

para especificar quantos segundos uma instância deve ficar inativa antes de ser descarregada. O padrão é 300 segundos.

Eu executo aplicativos web de tráfego muito alto com 3 instâncias sem problemas.

Ah e - o Ruby Enterprise Edition ajuda também.

    
por 30.05.2009 / 20:29
2

Você está usando a empresa Ruby? link

    
por 30.05.2009 / 06:28
1

Use o Ruby Enterprise Edition (recomendado com o Passenger), ou use o Ruby 1.9, que também é carrega mais rápido .

    
por 30.05.2009 / 06:45
1

Quantas solicitações simultâneas você precisa suportar? Eu usaria nginx e um pequeno grupo de mongrels . Dessa forma, você pode limitar a quantidade de recursos que seu aplicativo Ruby usa.

    
por 30.05.2009 / 13:39
0

Eu tive mais sucesso executando o mongrels / mongrel_cluster com o apache proxypass para o redmine. Não precisa de muito desempenho (eles são um monte de processos muito grandes / lentos, e tendem a chamar processos externos em cima disso. Você pode querer experimentá-lo em uma situação de benchmark e ver. Ele também foi morto). simples para eu configurar.

    
por 10.01.2010 / 20:39