las palmas devops: pruebas de carga web
Post on 13-Aug-2015
274 Views
Preview:
TRANSCRIPT
Ejemplo práctico con Gatling
Pruebas de carga web
Las Palmas DevOps Jonathan Araña Cruz
Jonathan Araña Cruz (aka jonhattan)
Sysadmin en la onda DevOpsDrupal developer
http://atlantic-canary.nethttp://github.com/jonhattan
@_jonhattan_
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
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
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
Variabilidad
● Factores fuera de nuestro control○ Servicios externos○ Red (control de congestión, anti flood/dos...)○ Eventos del sistema (origen o destino)○ Complejidad○ Timing
● Apache Bench - http://httpd.apache.org/docs/2.2/programs/ab.html● JMeter - http://jmeter.apache.org● Gatling http://gatling.io● …
Herramientas
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
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 &
Gatling: Prueba de carga
● https://gitlab.faita.net/jonhattan/gatling-example/commits/master
ssh s01.surgery.sbit.io -o "ServerAliveInterval=30" sudo tail -f /var/log/apache2/acme.s01.surgery.sbit.io_access.log | logstalgia -x --paddle-mode vhost -
USERS=100 TIME=10 ./bin/gatling.sh
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-2s06Uwy95T218KRKQUGg/edit#gid=0
Bola extra
top related