Las pruebas de carga son útiles para medir la respuesta de una web (o aplicación en general) ante un conjunto de peticiones recibidas.
Los datos que obtenemos al realizar una serie de pruebas de carga nos sirven para determinar cómo responde nuestra aplicación y la infraestructura donde se aloja.
En esta presentación se muestra cómo usar Gatling, una herramienta que nos permite configurar baterías de test y lanzarlos contra una web.
https://2017.drupalcamp.es/sessions/pruebas-de-carga-web-con-gatling-jonhattan
1. Pruebas de carga web con Gatling
Jonathan Araña Cruz
#DrupalCampES2017.drupalcamp.es
2. about:me
Jonathan Araña Cruz / jonhattan
● +10 years Drupal
● +10 years sysadmin
● Drush maintainer. Other contribs
● Infrastructure as code
● Indentation, syntax highlight addict
3. Cuestiones
¿Qué respuesta da una web? Número de visitantes, tiempos de generación, tasa de
errores,...
➜ Monitorización, Analytics,...
¿Cómo variará ante cambios…?
● En el código
● En el volumen de contenido
● En la configuración de la infraestructura
● En los recursos hardware
● En el número de visitantes
➜ Pruebas de carga
4. Pruebas de carga
● Diseñar planes de carga
○ Ej: cuantas visitas por segundo quiero simular
● Diseñar escenarios
○ Simulación de la interacción de los usuarios en la web
● Medir:
○ Tiempos de respuesta, peticiones fallidas,...
○ Estrés del servidor: carga máxima/media, ram, swap…
● Interpretar datos, sacar conclusiones
5. Reproducibilidad de los tests
● Condiciones iniciales
● Definir pasos necesarios para la reproducibilidad (volver a las condiciones
iniciales)
○ Cargar bbdd de referencia
○ Reiniciar servidor web / bbdd / memcache / …
○ Flushear memoria (cachés, buffers..)
○ Esperar a que disminuya la carga del sistema, etc
6. Variabilidad
● Factores fuera de nuestro control
○ Servicios externos
○ Red (control de congestión, anti flood/dos...)
○ Eventos del sistema (origen o destino)
○ Complejidad
○ Timing
8. Gatling
● Open-source load testing framework
based on Scala, Akka and Netty
● High performance
● Ready-to-present HTML reports
● Scenario recorder and
developer-friendly DSL
9. Gatling: Escenarios
● Codificar desde cero
● Capturar una sesión real con un navegador
● Ajustar escenarios para su reproducción
gatling/bin/recorder.sh &
chromium --proxy-server=http://127.0.0.1:8000 &
11. Caso real
● Web para preinscripción y reserva de plazas en eventos
● Fecha de apertura de inscripción
● ~ 2000 inscritos
https://docs.google.com/spreadsheets/d/1YT7WxqCJM5mqZBVoOf9tBp-2s06Uw
y95T218KRKQUGg/edit#gid=0