2009-05-13 13 views
6

I miei siti di rails funzionano con Mongrel, sto riscontrando un problema con la quantità di memoria utilizzata. I miei processi di ruby-bin stanno consumando circa 66 MB di memoria residente. Come posso ridurre la quantità di memoria utilizzata dalle rotaie?Riduci l'ingombro della memoria delle rotaie e aumenta le prestazioni?

Non è molto economico avere molti server in esecuzione su una singola macchina se stanno mangiando memoria a questa velocità. I miei processi php5 fcgi sono compresi tra 15-25 MB.

Sono abbastanza estraneo a RoR, utilizzo l'aiuto JRuby? Qualsiasi commento utile per ridurre l'impronta della memoria e aumentare le prestazioni è più che benvenuto.

risposta

7

Si potrebbe guardare Phusion Passenger e Ruby Enterprise Edition, che di solito è l'impostazione standard per le app Rails in questi giorni. Uno dei suoi obiettivi è il taglio dell'uso della memoria. È anche più semplice che avere un gruppo di Mongrels.

+0

+1 I secondo la raccomandazione del Passeggero. –

+0

+1 Secondo la raccomandazione REE, poiché include le patch di MBARI che consumano molta meno memoria. Quello o 1.9 usa anche di meno. Assicurati anche di utilizzare un sistema operativo a 32 bit, ove possibile. – rogerdpack

3

Se non sei legato ad Apache per qualcos'altro, vorrei provare anche nginx con Phusion Passenger. Se sei preoccupato per l'utilizzo della memoria, dovresti vedere un footprint più piccolo di nginx rispetto ad apache e l'ultima versione di Passenger scaricherà, compilerà e installerà nginx per te con un minimo di mal di testa.

1

Non andrei tanto lontano da dire che il Passeggero è lo standard di fatto, ma sta guadagnando molta trazione. Siamo appena passati a Nginx + Passenger e l'impronta di memoria della nostra app ruby ​​(ovvero Mongrels vs. Passenger) è scesa da circa 450MB a 295 MB. Può diminuire di meno, in quanto Passenger eliminerà i proc se sono inattivi (è configurabile), ma ovviamente se ricevi traffico e utilizza tutte le istanze in cui è configurato, quindi utilizzeranno la memoria di conseguenza .

Nota che non stiamo ancora utilizzando Ruby Enterprise Edition nella nostra configurazione (principalmente perché non è ancora disponibile in Engine Yard), ma stiamo ancora vedendo un footprint di memoria più piccolo. La memoria era il primo motivo per cui abbiamo fatto il passaggio, ma ci sono altri vantaggi, come una configurazione più rapida e semplice per il ridimensionamento verso l'alto o verso il basso e così via.

3

È inoltre possibile sostituire il processo ibrido con Thin che è più efficiente ed è stato recentemente corretto nella sua Garbage Collection (attraverso eventmachine), per renderlo ancora migliore.

Usiamo cluster sottili dietro frontend di nginx con risultati eccellenti.