Consigli e indicazioni per configurazione applicazione Rails in produzione

Ciao a tutti,
volevo sapere se qualcuno di voi ha esperienza nella configurazione di
un’applicazione RubyOnRails su un server di produzione.
Attualmente la mia applicazione configurata con Apache + mod_passenger
e
un massimo di 10 istanze di Rails + 1 DB Postgresql.
Con l’attuale configurazione riesco a gestire tranquillamente un carico
di
qualche migliaio di utenti al giorno e fino a 30~50 utenti
contemporaneamente.
In previsione di un aumento esponenziale nel numero di utenti che
potrebbe
salire di circa due ordini di grandezza come vi muovereste?
Avreste qualche consiglio, link, indicazione da darmi?
Cosa fareste al posto mio, insomma? :slight_smile:
Avrei bisogno di effettuare statistiche sull’utilizo di CPU, memoria e
disco, c’ qualche modulo per Apache che mi possa aiutare?

Grazie a tutti!
Alessandro R.

Ciao Alessandro,

Ogni processo Rails gestisce una sola richiesta HTTP alla volta, a meno
che
tu non l’abbia configurato diversamente.
La prima domanda che ti devi porre quanta RAM ha il tuo server di
produzione, poich potresti dover avviare nuovi processi Rails.
Se il tuo server di produzione non ha abbastanza RAM, devi aggiungere un
nuovo server, e condividere il database.

Il mio consiglio per di modificare l’applicazione in modo che sfrutti
il
caching, sia a livello HTTP, che di partials, che di oggetti.

Io svolgo i miei benchmark con AB.

Ciao,

Matteo

Il giorno 18 marzo 2013 13:04, Alessandro R. [email protected] ha
scritto:

Ciao,

io inizierei col monitorare production con qualcosa tipo new relic, e
risolvere bottleneck attuali (se ne esitono).

New Relic due o tre anni fa’ aveva sponsorizzato dei video su scaling
rails. Ci sono spiegati parecchi concetti di base che potrebbero
aiutarti (load testing, HTTP caching, scaling the DB):

Una buona lettura e’ “The art of capacity planning”
(http://www.amazon.com/Art-Capacity-Planning-Scaling-Resources/dp/0596518579/ref=sr_1_4?s=books&ie=UTF8&qid=1363645076&sr=1-4&keywords=scaling+web+applications)
da qualche nozione su come fare load testing e spiega come avevano
gestito aumento di traffico a Flickr.

La strategia da usare dipende da cosa fa’ la tua applicazione.

Good luck!

Enrico

2013/3/19 Matteo C. [email protected]:

caching, sia a livello HTTP, che di partials, che di oggetti.
scritto:

salire di circa due ordini di grandezza come vi muovereste?
http://lists.ruby-it.org/mailman/listinfo/ml


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml


Enrico T.
Software development and web design
currently working @ http://abc.com.au
Sydney, NSW, Australia
[email protected]
mobile (AU) +00610416748450

On 18/03/2013 14:04, Alessandro R. wrote:

Ciao a tutti,
volevo sapere se qualcuno di voi ha esperienza nella configurazione di
un’applicazione RubyOnRails su un server di produzione.

L’ottimizzazione di RoR in produzione un argomento da sistemisti e non
programmatori improvvisati tali (come spesso accade)… :slight_smile:

Intanto: Passenger 3.x o Passenger 4.x?

A questo link
http://www.modrails.com/documentation/Users%20guide%20Apache.html#_resource_control_and_optimization_options
trovi la spiegazione dettagliata di alcune opzioni di ottimizzazione.
Io, pi che ab, preferisco l’uso httperf in combinazione con htop e
altri strumenti di base del sistema operativo per toccare e ritoccare
queste opzioni, con alcune formule di base parametrizzate sulle risorse
di sistema. Valuta anche blitz.io per richieste geograficamente
sparse…

Se intendi scalare verso l’alto considera di deployare su pi host e un
load balancer davanti (come haproxy).

Integra soluzioni di caching di sistema, come memcached…

Che dire, per il monitoraggio delle risorse, New Relic se il budget te
lo permette, altrimenti in proprio Ganglia o collectd, per status
Nagios.

Libro abbastanza recente:

Ciao
Fabrizio.

Ciao,
qui trovi alcune gemme per misurare le perfomance:

bye

Riccardo

Grazie a tutti degli ottimi consigli li sto rpendendo in considerazione
uno
a uno: soprttutto quello che non posso fare il sistemista improvvisato
:slight_smile:
che proprio vero!

Alessandro R.