Ejecución de Tests Masivos en Local con K6
Clase 10 de 27 • Curso de Performance Testing en Node.js con K6
¡Hola!
En clases anteriores te comenté que uno de los problemas que tenemos al correr nuestros tests en local, es que no podemos escalarlos tan fácilmente; sin embargo, K6 desde hace poco nos ofrece una alternativa para correr tests muy grandes en nuestra máquina.
La idea con esto, es tratar de simular un escenario donde el hardware y la cantidad de usuarios sea lo más parecido posible a nuestro entorno de producción. Para el caso particular de K6, estamos hablando de un máximo de 30.000 a 40.000 Virtual Users (VUs) lo que equivale a unas 300.000 peticiones por segundo (RPS)
Antes de explicarte cómo hacerlo, debes considerar si tu máquina cumple con los siguientes requisitos para escalar tests en local.
- Un VU consume entre 1 y 5 MB de memoria RAM, por lo que si queremos hacer un test con 10.000 VUs, necesitaremos entre 10 GB y 15 GB de memoria RAM libres (Debes ajustar este número dependiendo de las capacidades de tu máquina).
- Idealmente que la CPU de tu máquina esté por debajo del 20% de uso en reposo, ya que esto podría afectar el registro de resultados.
- Servicios como EC2 limitan la red a 125 Mb/s, por lo que si nuestro test mantiene esta cantidad de tráfico, simularemos ese escenario.
Lo primero que tenemos que hacer, es remover los límites de red, para que nuestro test tenga la máxima capacidad de red posible.
Estos comandos nos permiten incrementar la cantidad de puertos que podemos usar en local, así como reutilizar las conexiones de red, e incrementar su capacidad. Puedes guardar esta configuración para todos los tests, pero personalmente recomiendo que la actives justo antes de correr un test extremadamente grande en local.
Por último, te recomiendo un par de herramientas que nos permitirán monitorear los recursos de hardware y de red mientras se ejecuta nuestro test.