performance - sirve - que tan seguras son las pruebas de embarazo de sangre
¿Qué tan exactas son las pruebas con Siege y AB? (1)
Aquí hay un artículo bastante bueno que discute los escollos de tratar de realizar pruebas de tipo Siege
o ab
y luego abstraer qué tan bien funcionará su aplicación web o sitio web bajo carga.
Aquí hay algunas viñetas de esa página que muestran los problemas para realizar este tipo de pruebas:
Siege no es representativo de lo que un usuario real (o varios usuarios) estaría haciendo en tu sitio web. Solo puede cargar el código de respuesta sin procesar y HTML, no todos los demás elementos dentro de una página (imágenes, CSS, JS u otro contenido estático), por lo que, de manera efectiva, solo prueba el rendimiento de PHP.
También tiene un soporte de sesión / cookie muy limitado, no tiene soporte para la canalización y soporte básico para HTTP / 1.1. La carga que está generando no se parece en nada a la de un usuario real, por lo que es buena para una referencia rápida después de los cambios; en realidad no indica que nada cambiará para un usuario en la vida real.
El asedio se puede engañar fácilmente, no puede diferenciar entre un archivo estático que se sirve (es decir, un archivo HTML puro) o un archivo dinámico (es decir, una página dinámica de Magento PHP). Entonces, si está ejecutando cualquier tipo de proxy de archivo estático, los resultados se desvían inmediatamente. En este punto, solo estará probando el proxy de almacenamiento en caché, no la velocidad de entrega detrás de él.
Por lo tanto, aquellos que utilizan Varnish, Nginx caching, mod_pagecache pueden fácilmente almacenar la página en un caché y verán tiempos de renderización de 20ms. Si está utilizando Varnish, entonces utilice Siege para probar el rendimiento, es posible que también esté cargando una imagen en lugar de la URL de la categoría, ya que dará exactamente los mismos resultados.
Probar servidores remotos es casi inútil ya que es una prueba de concurrencia (es decir, cuántas solicitudes pueden satisfacerse repetidamente), el cuello de botella inmediato es la conexión de red entre las dos máquinas. La latencia y las sobrecargas de TCP / IP son las que hacen que la prueba de un sitio remoto sea completamente inútil, la menor congestión de red entre un par entre los dos servidores mostrará inmediatamente un rendimiento reducido. Entonces, lo que realmente comienza a entrar en juego es la rapidez con la que se puede completar el protocolo de enlace de tres vías TCP (el servidor que se está probando podría estar sirviendo una página dinámica o un archivo estático de 0 bytes), y podría ver exactamente las mismas tasas de rendimiento, como La conectividad es el cuello de botella.
El otro tema que discuten en el artículo que puede tener el impacto más dramático en el rendimiento general de su sitio web es la latencia entre su sitio y los clientes que acceden a él. Tienen una buena explicación de cómo la latencia puede afectar el rendimiento de sus sitios de manera que sus usuarios finales lo sentirán, pero Siege
y ab
tipo de herramientas de prueba nunca expondrán.
De nuevo extrayendo el artículo:
Ping del Reino Unido al Reino Unido
[~]$ ping www.bytemark.co.uk -c4
PING www.bytemark.co.uk (212.110.161.177) 56(84) bytes of data.
64 bytes from extapp-front.bytemark.co.uk (212.110.161.177): icmp_seq=1 ttl=57 time=2.86 ms
64 bytes from extapp-front.bytemark.co.uk (212.110.161.177): icmp_seq=2 ttl=57 time=2.51 ms
64 bytes from extapp-front.bytemark.co.uk (212.110.161.177): icmp_seq=3 ttl=57 time=2.54 ms
64 bytes from extapp-front.bytemark.co.uk (212.110.161.177): icmp_seq=4 ttl=57 time=2.63 ms
--- www.bytemark.co.uk ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 2.515/2.641/2.869/0.142 ms
Ping del Reino Unido a Estados Unidos
[~]$ ping www.mediatemple.net -c 4
PING www.mediatemple.net (64.207.129.182) 56(84) bytes of data.
64 bytes from mediatemple.net (64.207.129.182): icmp_seq=1 ttl=49 time=158 ms
64 bytes from mediatemple.net (64.207.129.182): icmp_seq=2 ttl=49 time=154 ms
64 bytes from mediatemple.net (64.207.129.182): icmp_seq=3 ttl=49 time=154 ms
64 bytes from mediatemple.net (64.207.129.182): icmp_seq=4 ttl=49 time=154 ms
--- www.mediatemple.net ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 154.155/155.282/158.321/1.802 ms
Inmediatamente se puede ver la diferencia en el rendimiento. Para esa única conexión TCP / IP a los EE. UU. Desde el Reino Unido, tomó 156 ms, 62 veces más que a un servidor en el Reino Unido. Lo que significa que antes de que intentes algo, el rendimiento máximo que puedes lograr en Siege en un segundo será de alrededor de 6 transacciones por segundo, solo por la latencia.
Recomiendo encarecidamente leer todo el artículo. Hace un muy buen trabajo explicando los escollos de hacer pruebas de rendimiento usando herramientas como Siege
y ab
!
Tengo curiosidad por saber cuánto puedo confiar en los resultados de las pruebas de carga con Siege y AB. Me doy cuenta de que no tienen en cuenta los activos estáticos (imágenes, JS, CSS), pero asumiendo que todo eso se sirve de un CDN, si Siege / AB me dice que puedo atender a 200 usuarios concurrentes, ¿hay alguna razón para no hacerlo? No confíes en eso? ¿No estoy considerando otros factores, como las limitaciones que puede tener la máquina que ejecuta la prueba?