Probando los límites de una app Rails (Benchmarking)

Buenas gente,

Tengo que hacer unas pruebas de stress a una app rails, pero no quiero
limitarme a un httperf o ab, sino algo más serio para probar de forma
concurrente operaciones get junto con post, put y delete. Algo así
como simular que pasaria si de repente tengo 200 usuarios concurrentes
pero no solo mirando la web, sino interactuando con ella…

Existe algo por allí para hacer este tipo de cosas? O hay que
ingeniarselas con scripts a base de curl? ¿Alguien ha probado algo
similar?

No es una pregunta relacionada directamente con rails, pero pienso que
vendria bien a todos saber como realizar este tipo de tests, no?

Salutaciones,

Isaac Feliu

2008/9/24 Isaac Feliu Pérez [email protected]:

Buenas gente,
Existe algo por allí para hacer este tipo de cosas? O hay que
ingeniarselas con scripts a base de curl? ¿Alguien ha probado algo
similar?

Me suena que Jaime I. abrió un hilo parecido hace tiempo …pero
no consigo encontrarlo.

Mi sugerencia fue jmeter:
http://jakarta.apache.org/jmeter/usermanual/build-web-test-plan.html

Pero a los puristas creo que no les gusta :slight_smile:

f.

Uah!

Me lo he mirado algo por encima y no tiene mala pinta… salvo por
dos detalles:

  1. Hecho en Java. :stuck_out_tongue:
  2. App de Desktop, no me sirve pues quiero hacer las pruebas de stress
    contra el server de producción (antes de que esté en producción), y
    desde mi cutre-linea ADSL no tengo capacidad de enviar tantos requests
    concurrentes y fiarme que el limite lo pone el server o telefonica.

Me interesa hacerlo desde el propio server atacando a localhost, para
probar el rendimiento máximo de mi stack nginx+mongrel sin temas de
anchos de banda…

Pero gracias por la aportación, la verdad que no tiene mala pinta…

Salutaciones,

Isaac Feliu

jmeter no por favor … tuve malas experiencias con eso hace unos meses.

httperf no es tan simplón. Fué desarrollado por HP si mal no recuerdo.

En PeepCode hay un screencast que habla del tema.

On 24/09/2008, at 0:19, “Fernando G.” [email protected]

Pero desde tu máquina no tendrás los resultados que tu quieres.
Porque al final tu aplicación va a estar en un cluster donde va a
haber latencia entre las máquinas …

Yo optaría por tirar unas máquinas virtuales en EC2 simulando tu
infraestructura y lanzar tests desde varios datacenters.

On 24/09/2008, at 0:33, Isaac Feliu Pérez [email protected]

2008/9/24 Isaac Feliu Pérez [email protected]:

Buenas gente,

Tengo que hacer unas pruebas de stress a una app rails, pero no quiero
limitarme a un httperf o ab, sino algo más serio para probar de forma
concurrente operaciones get junto con post, put y delete. Algo así
como simular que pasaria si de repente tengo 200 usuarios concurrentes
pero no solo mirando la web, sino interactuando con ella…

Yo ahora mismo estoy usando ab, de momento me conformo con intercalar
peticiones post (o derivadas) entre series de peticiones get
concurrentes. Sé que no es el colmo de la exactitud, pero de momento
creo que no necesito un grano más fino: prefiero analizar y mejorar el
rendimiento a nivel general (que ya es tarea) y esperar a ver el uso
real de la aplicación para detectar dónde tengo que seguir afinando.

Como alternativa, ¿has probado a lanzar dos ab’s simultáneos, uno con
post y otro con get?

Raul,

habia pensado lo de tener varios ab a la vez probando get, put y
delete pero claro, tampoco es muy real que digamos, puesto que
normalmente en una app tienes muchos más gets que posts, la iea seria
tener 100 gets + 2 posts + 1 put y 1 delete, todo simultaneo, probando
10k requests i ver que tal se comporta el invento.

Viendo que no hay nada más o menos asi, me pondré a hacer algunas
pruebas con curl + ab, ya os contaré. :wink:

Salutaciones,

Isaac Feliu

El día 24 de septiembre de 2008 9:48, Francesc E.
[email protected]
escribió:>

jmeter no por favor … tuve malas experiencias con eso hace unos meses.

cuales? … yo es que aveces lo uso me gustaría saber si no es de fiar.

f.

Francesc,

tengo el screencast, pero estamos en lo mismo: probar 10k request
iguales contra la misma url no es un test “válido” para mi. Sirve para
detectar slow requests i solucionar algun que otro memory leak o saber
como mejorar el rendimiento de una
acción.
Yo lo que quiero es simular que pasa cuando esté en producción, con
miles de usuarios atacando mi app, llamando a varios cientos de
acciones distintas, actualizando registros, borrando, creando, etc…

En este sentido JMeter no tenia mala pinta, però es una app de
Desktop, así que no me sirve.

Salutaciones,

Isaac Feliu

Bueno, la infraestructura ya la tengo (no necesito simularla) :wink:

Por esto lo quiero provar desde allí. A ver si nos vemos un dia de
estos y hablamos de EC2… en la BcnOnRails? :wink:

Salutaciones,

Isaac Feliu

On Wed, Sep 24, 2008 at 12:19 AM, Fernando G.
[email protected] wrote:

2008/9/24 Isaac Feliu Pérez [email protected]:

Buenas gente,
Existe algo por allí para hacer este tipo de cosas? O hay que
ingeniarselas con scripts a base de curl? ¿Alguien ha probado algo
similar?

Me suena que Jaime I. abrió un hilo parecido hace tiempo …pero
no consigo encontrarlo.

Sip, era en este hilo:
http://lists.simplelogica.net/pipermail/ror-es/2008-March/013645.html

Concretamente se hablaba de siege [1] y de este listado que recoge
otras alternativas [2]. Siege mola bastante.

[1] Siege 3.0.3 and URL Encoding
[2] http://www.opensourcetesting.org/performance.php


Jaime I.
http://jaimeiniesta.com
http://www.workingwithrails.com/person/6722-jaime-iniesta

Vaya!

Pues gracias, siege parece justo lo que estaba buscando, voy a echarle
un ojo a ver que tal se porta. :slight_smile:

Salutaciones,

Isaac Feliu

Aquí he encontrado otro listado de estas herramientas:

f.

Estaría guay que ‘alguien’ montara un servicio web para hacer estas
cosas…

Configurable mediante formularios y que sacase estadísticas en varios
formatos incluido en formato gráfico

Lo apunto en el listado de ideas al aire :slight_smile:

f.

On Wed, Sep 24, 2008 at 1:51 PM, Fernando G.
[email protected] wrote:

Estaría guay que ‘alguien’ montara un servicio web para hacer estas cosas…

Configurable mediante formularios y que sacase estadísticas en varios
formatos incluido en formato gráfico

Lo apunto en el listado de ideas al aire :slight_smile:

Lo malo es que también se podría usar para putear webs, no?
Saturándolas a peticiones.


Jaime I.
http://jaimeiniesta.com
http://www.workingwithrails.com/person/6722-jaime-iniesta

El día 24 de septiembre de 2008 15:11, Ceritium [email protected]
escribió:>> > Lo apunto en el listado de ideas al aire :slight_smile:

Lo malo es que también se podría usar para putear webs, no?
Saturándolas a peticiones.

Lo mismo pasa con todos los sistemas de testeo de carga actuales que
los puedes usar para saturar aplicaciones.

Se puede poner un validador como hace google webmaster tools, el te da un
nombre de fichero loquesea.html tu lo subes y si lo detecta sigues
adelante.

Y esto además… buena idea.

f.

He resumido la idea aquí, por si a alguien le apetece comentar/sugerir
algo:

Saludos
f.

2008/9/24 Jaime I. [email protected]

Lo malo es que también se podría usar para putear webs, no?
Saturándolas a peticiones.

Se puede poner un validador como hace google webmaster tools, el te da
un
nombre de fichero loquesea.html tu lo subes y si lo detecta sigues
adelante.