Upload
superserch
View
628
Download
0
Embed Size (px)
Citation preview
Pruebas de Estréspor: Sergio Martínez
@SuperSerch
¿Qué es una prueba de estrés?estrés. (Del ingl. stress).
1. m. Med. Tensión provocada por situaciones agobiantes que originan reacciones psicosomáticas o trastornos psicológicos a veces graves.
Real Academia Española © Todos los derechos reservados
¿Qué es una prueba de estrés?Es un proceso en donde, con ayuda de herramientas se cre a un ambiente adverso a fin de determinar la habilidad de un sistema a mantener un cierto nivel de efectividad
¿Para qué hacerlas?Encontrar cuellos de botella Encontrar “Memory leaks” Encontrar fallas de concurrencia Conocer la capacidad del sistema con la infraestructura actual
Herramientas
fwptt
JCrawler
Web Capacity Analysis Tool (WCAT)Siege
¿Por qué no falló en la prueba?La prueba y el sistema estaban en el mismo equipo Millones de peticiones a un solo URL Mal diseño del script de pruebas Incorrecta ejecución de la prueba Falta de monitoreo durante la prueba
Puntos a considerar al diseñar y realizar una
prueba de estrés
Hipótesis ¿Qué es lo que estoy queriendo probar?
Peticiones por segundo antes del punto de degradación Relación: Transferencia - Memoria - CPU Eficacia de la Arquitectura del sistema Soporte a fallos
Infraestructura similar a Producción
Tener los mismos componentes Tener configuraciones similares Conocer las diferencias y como afectan al sistema
Ancho de bandaMinimizar puntos intermedios Incluir (o no) elementos estáticos Carga de bibliotecas externas (CDNs)
Usuarios (cuentas)Sistema de autenticación y seguimiento
Cookies
Header
URL
Usar Múltiples cuentas
CacheNaturales Memcached Aleatoriedad en el comportamiento de los usuarios
Contención en EscrituraBases de datos Archivos Recursos de Red Diferentes usuarios sobre el mismo recurso
Escalabilidad¿Existe una manera simple de escalar el sistema? Incremento o decremento de la cantidad de servidores durante la prueba Multiples clientes de prueba
Demo
Resultados¿Se confirmó la hipótesis? ¿El monitoreo refleja la forma de la prueba? ¿El cambio del código de la función X afectó al rendimiento global del sistema? ¿Se encontraron problemas de rendimiento?
Si no experimentamos con el sistema, Producción será el
primer experimento.
Preguntas
¿Cómo puedo hacer una prueba con millones de usuarios?
Instalar JMeter en varios servidores Tener un servidor central Registrar las IPs en el servidor central http://jmeter.apache.org/usermanual/remote-test.html
¿Se puede probar una aplicación que recibe tweets?
Se podría intentar simular con el JSR223 Sampler JSR223: Scripting for the Java Platform
http://jmeter.apache.org/usermanual/component_reference.html#JSR223_Sampler
https://blazemeter.com/blog/queen-jmeters-built-componentshow-use-beanshell
Se puede programar un plugin para simular el stream https://github.com/apache/jmeter/blob/doc-v2_3_1/src/examples/org/apache/jmeter/examples/sampler/ExampleSampler.java
¿Cuándo se deben iniciar las pruebas de estrés?
Lo antes posible Fail-Fast: en cuanto se defina la arquitectura del sistema y se pueda tenerlo operando, así se puede validar