Pruebas de Stress en Apps Rails

Muchas veces cuando estas en las fases de pruebas, y cuando tu aplicación se supone que va a soportar grandes flujos de peticiones, querrías testear la misma antes de ponerla en producción.

Como es lógico, estas pruebas sería materialmente imposible hacerlas uno mismo, ya que seríamos incapaces manualmente de generar suficientes peticiones como para saber los límites de rendimiento de nuestros proyectos. Para esto hay utilidades que ya no solo podemos testear aplicaciones con Rails, si no también cualquier aplicación web escrita en el lenguaje de tu elección.

Aplicaciones de stress

Entonces, desechada la opción de enviarle un mail a todos tus familiares y conocidos para que prueben la app. Vamos a echar un ojo al mundo del software libre para ver los recursos que nos brinda:

JMeter

JMeter aunque un tanto engorroso de configurar, es un gran aliado. Después de trabajar un poco con el se entiende bastante bien y se llega a aprovechar mucho su uso. Además permite trabajar como proxy HTTP para capturar las solicitudes y repetirlas

ab - Apache HTTP server benchmarking tool

ab permite realizar mú;ltiples peticiones GET o POST contra un servidor. Las peticiones las podemos hacer en modo secuencial o, como a nosotros nos interesa en esta ocasión, de modo concurrente, de la misma forma que podemos hacer que las peticiones sean independientes o de forma que esten en la misma sesión.

httperf

Este proyecto tiene muchas opciones para “machacar” a los servidores, donde puedes simular “ráfagas” de “usuarios” conectados de forma concurrente, simula muy bien las sesiones al estilo de los navegadores HTTP actuales.

Además las estadísticas que reporta son muy completas, donde podemos ver porcentaje de uso de CPU, tiempos de respuesta y muchas más cosas.

Autobench

Esta es una abstracción de httpref, no es más que un script escrito en Perl para automatizar la medición del comportamiento. Es básicamente incrementar el nú;mero de peticiones o nivel de concurrencia conforme pase el tiempo y analizar cambios bruscos en las peticiones. El nivel de detalle de este llega al punto de crear gráficas, geniales para su mejor lectura.

En todos los casos tienes que buscarte un poco la vida y trabajar un poco el * —help, ya que la documentación es mas bien escasa, yo empezaría por estudiarte la RFC2616 - HTTP/1.1 Specification.

En definitiva, y bajo mi punto de vista Autobench está muy bien por la utilidad de las gráficas, y para todo lo demás httperf se comporta muy bien.