A mi modo de ver, la prueba de carga se trata primero de la estrategia, el proceso y luego de las herramientas, por lo que respondo así.
Objetivo de la prueba de carga:
Primero determine por qué desea realizar esta prueba de carga. Es para
- Encuentre los límites de su infraestructura actual o
- Para averiguar si su infraestructura se escalará a un cierto punto (número de solicitudes por segundo)
Dependiendo de la respuesta anterior, su enfoque variará
- ¿Vale la pena emigrar a Suecia o Noruega como desarrollador de software?
- ¿Qué opinas de Hack, el nuevo lenguaje de programación de código abierto de Facebook? ¿Por qué?
- ¿Cuáles son algunas demostraciones impresionantes de las posibilidades de Vim para principiantes?
- Cómo hacer un tipo de funcionalidad de activación de base de datos en MongoDB
- ¿Por qué es engañoso llamarte desarrollador de pila completa en LinkedIn solo porque te graduaste de bootcamp de codificación?
Desafíos de las pruebas de carga.
- Entorno para realizar pruebas de carga. ¿Realmente desea realizar una prueba de carga en su producción, si no tiene una infraestructura comparable con todas las bases de datos de piezas, servidores de aplicaciones, capas de almacenamiento en caché, equilibradores de carga, etc.? Si lo está haciendo en contra de la producción, lo está haciendo en la hora pico, ¿se caerá el sitio? Si no, ¿estás haciendo una prueba adecuada?
- Gente: ¿tiene la combinación correcta de personas? Operaciones, db presente y disponible para comprender los resultados de la prueba de carga y combatir incendios contra las llamas que cree
- Métricas : qué significan las solicitudes por segundo, el rendimiento, el tiempo promedio de solicitud, 499 solicitudes, los tiempos de espera.
- Monitoreo : la herramienta de elección le muestra dónde está golpeando los cuellos de botella, ¿puede distinguir entre el tráfico generado por sus pruebas y el tráfico real?
- Datos: ¿ puede generar tráfico a pedido que sea capaz de simular el tráfico del mundo real? Si sigue haciendo ping en la URL, puede almacenarse en caché y no verá la prueba de carga real. Pero si varía demasiado, puede llegar a casos límite que no le interesan para esta prueba
- Almacenamiento en caché: esto me hace tropezar todo el tiempo, para nuestra empresa mediana tenemos almacenamiento en caché en 4 capas diferentes de almacenamiento en caché de db, almacenamiento en caché del servidor, memcache, caché redis, caché del cliente.
- Tráfico de múltiples IP : un gran problema que tengo JMeter y Apache Bench es que todo el tráfico es generado por la máquina de desarrollo. No es realmente sincrónico y está limitado por la cantidad de procesadores en esa máquina.
- Tráfico desde varias ubicaciones geográficas : el mismo problema que el anterior, la herramienta que utilizamos crea solicitudes desde cinco ubicaciones geográficas
- Patrones de carga: dependiendo de su objetivo, es posible que desee verificar si su servicio se mantiene durante un largo período de tiempo al mismo tiempo de respuesta o ráfagas de tráfico.
Herramientas
Solo tengo un par de herramientas aquí es donde se encuentran en los términos anteriores
Apache Bench / JMeter: los agruparon porque ambos parecían bastante similares, son herramientas de línea de comandos capaces de hacer una serie de solicitudes paralelas. Para variar los datos, utiliza sus propios scripts personalizados, no puede crear carga desde múltiples direcciones IP o ubicaciones geográficas. No recuerdo ahora, pero creo que también puede variar los patrones de carga. Para las métricas, estás solo.
Blitz.io: esta es la herramienta que estamos utilizando y con la que estamos moderadamente satisfechos. Blitz puede variar los datos en función de las variables, proporciona métricas. También puede simular el tráfico desde 5 ubicaciones geográficas (centros de datos de AWS) y, lo mejor de todo, puede simular varios patrones de carga como rampa y retención, dientes de tiburón, etc. Además, tienen una gema de rubí.