Calcular instancias de Mongrel

Saludos amigos, revisando informacion acerca de como escalar
correctamente
mi
aplicacion(Parked at Loopia
) me encuentro con esta interesante formula para calcular las instancias
de
Mongrel:

A. Take the (average or median) request time, in seconds. Say,
0.250seconds (250ms)
B. How many requests do you want to handle at peak? ( e.g. 10,000 a
minute, 166 a second)
C. Multiply A x B : 0.250 * 166 = 41.5

Mi duda viene con el punto A, como puedo calcular el tiempo promedio de
cada
peticion?, algo me indica que tienen que ver los logs del servidor, no
se,
tal vez alguien tiene por ahi una buena forma de calcular esto, o como
hacen
ustedes para calcular el numero de instancias que necesitan?.

Otra pequeña inquietud que tengo es acerca de cuanto consume realmente
cada
instancia de mongrel?, unos dicen que 60 MB otros que 40 MB, supongo que
eso
sera lo maximo que puede consumir por instancia y no lo que esta
consumiento
todo el tiempo, les agradeceria bastante me iluminen en este sentido.

Muchas gracias.
Ruben.

Hola Ruben,

te cuento:

Mi duda viene con el punto A, como puedo calcular el tiempo promedio de cada
peticion?, algo me indica que tienen que ver los logs del servidor, no se,
tal vez alguien tiene por ahi una buena forma de calcular esto, o como hacen
ustedes para calcular el numero de instancias que necesitan?.

Normalmente lo que se haces es lanzar pruebas de carga contra tu
aplicación utilizando algún software específico (por ejemplo httperf
[1], ab [2], o jmeter [3]) e ir anotando cuál es el rendimiento por
segundo para determinado número de peticiones concurrentes y
determinado número de mongrels: al principio el rendimiento mejorará
según aumentemos el número de mongrels, hasta que se llega a un punto
se saturación a partir del cuál aumentar el número de mongrels no
mejora el rendimiento sino que lo degrada.

El número de mongrels en ese punto de saturación es un buen indicativo
de cuál es el número óptimo de mongrels.

Todo esto lo explica Zed S. muy bien aquí [4].

Otra pequeña inquietud que tengo es acerca de cuanto consume realmente cada
instancia de mongrel?, unos dicen que 60 MB otros que 40 MB, supongo que eso
sera lo maximo que puede consumir por instancia y no lo que esta consumiento
todo el tiempo, les agradeceria bastante me iluminen en este sentido.

Por supuesto, el número de mongrels te lo puede limitar la memoria de
la que dispongan tus servidores de aplicaciones.

Así un poco dando cifras a lo loco se recomiendan entre 4 y 8 mongrels
por aplicación, que coincide con la restricción de 10 mongrels por
núcleo de la CPU.

Y la memoria que consumen, pues depende: nosotros ahora mismo tenemos
mongrels con más de 100 Mb para unas instalaciones y otros que no
llegan a los 60 Mb. Depende de: cuán eficiente sea tu código, cuántas
librerías cargues, etc etc

Así que creo que el único camino es la experimentación: prueba con
pocos mongrels, y luego ves aumentando. Vigila el consumo de memoria y
los logs del software que utilices como proxy para ver si indican
fallos de que se encuentran sin procesos hijo (en cuyo caso debes de
aumentar la cifra).

Y por último recomiendo la lista de correo Deploying Rails [5], en la
que participan gente muy famosa y muy buena del mundillo.

Saludos!

[1] http://www.hpl.hp.com/research/linux/httperf/
[2] ab - Apache HTTP server benchmarking tool - Apache HTTP Server
[3] Apache JMeter - Apache JMeter™
[4] http://mongrel.rubyforge.org/docs/how_many_mongrels.html
[5] http://groups.google.com/group/rubyonrails-deployment/about