2011-02-11 7 views
6

Sto eseguendo un'istanza Redmine con Passenger e Nginx. Con solo una manciata di problemi nel database, Redmine consuma oltre 80 MB di RAM.Riduzione dell'utilizzo della memoria di Redmine - Frutta appesa bassa

Qualcuno può condividere suggerimenti per ridurre l'utilizzo della memoria di Redmine. L'istanza di Redmine è utilizzata da 3 persone e sono disposto a sacrificare in velocità.

+0

Non una soluzione, ma, se non si utilizza REE (e utilizzando Ruby 1.8.7) provatelo, per le mie app è uno sconto di memoria del 30%. – andrea

risposta

3

Non ci sono frutti appesi veramente bassi. E se ce ne fossero, li avremmo già inclusi e attivati ​​di default.

80 MB RSS (al contrario delle dimensioni virtuali che possono essere molto di più) è in realtà piuttosto buono. Nel normale funzionamento, utilizzerà tra 70 e 120 MB di RSS per processo (a seconda del modello di implementazione, piuttosto pochi per i passeggeri).

Come suggerito da andrea, è possibile ridurre l'ingombro di memoria complessivo di circa un terzo quando si utilizza REE (Ruby Enterprise Edition, che è anche gratuito). Ma questo risparmio può essere raggiunto solo quando si esegue più di un processo (ognuno richiede la memoria di cui sopra). REE raggiunge questo risparmio ottimizzando Ruby per una tecnica chiamata Copy on Write, in modo che i processi applicativi addizionali richiedano meno memoria.

Quindi mi dispiace, il tuo (ipotetico) vBb da 128 MB probabilmente non è sufficiente. Per una piccola installazione, potresti essere in grado di spremere un'installazione minima in 256 MB, ma inizierà a essere tutto fuorché un completo rompicapo a 512 MB (incluso il database).

Ciò è dovuto al modo in cui le applicazioni Rails funzionano in contrasto con cose come PHP. Richiedono un'istanza del server delle applicazioni in esecuzione. Questa istanza è in genere in grado di rispondere a una richiesta alla volta, utilizzando sempre la stessa quantità di memoria. Quindi il consumo di memoria è approssimativamente equivalente al numero di processi applicativi eseguiti, indipendentemente dal carico effettivo. Ma se si sintonizza correttamente il sistema, è possibile ottenere un numero piuttosto elevato di richieste/i di un processo.

+0

Ok, lo capisco. Sto già usando REE. Finora, 160 MB (su un piano WebFaction) sono stati abbastanza buoni sia per Redmine che per il piccolo progetto Django per il quale stiamo usando Redmine. Questo probabilmente cambierà quando l'app di Django sarà disponibile. –

+0

Per le app Django, è possibile risparmiare un sovraccarico bypassando Django e servendo file multimediali statici direttamente da Apache o Nginx. Hai qualche consiglio del genere per Ruby? –

+0

@aantn: Dato che stai già utilizzando nginx + passenger, è esattamente quello che sta succedendo. I file statici vengono forniti direttamente da nginx e le richieste dinamiche vengono inoltrate al passeggero per ricevere una risposta dai binari. –

Problemi correlati