Testes de carga, de estresse e de varredura com o k6: encontre o joelho, confira a Lei de Little, dê nome ao gargalo
O catalog fica lento sob carga. Cache? Réplica? Mais dez servidores? Qual — e como você sabe?
catalog
docker stats
vus
*-arrival-rate
dropped_iterations
Coordinated omission: um testador fechado pula justamente as requisições que mais sofreriam.
k6 run -e RATE=200 -e DURATION=1m load/load.js
tomcat.threads.busy
hikaricp.connections.active
hikaricp.connections.pending
bash scripts/watch-metrics.sh http://localhost:8082
Três terminais em todo teste: k6, watch-metrics, docker stats.
bash scripts/sweep.sh 50 100 200 300 400 500 600 uv run scripts/summarize.py results/lab2/rate-*.json
Um notebook, uma execução. Os seus números serão outros — o formato, não.
S / (1 − ρ)
Capacidade = a maior taxa com o p99 dentro da meta — não o maior throughput já impresso.
db_active = 10
db_pending
200 threads ocupadas, 10 conexões ativas, 190 pendentes. Mais threads no Tomcat iriam…?
DB_POOL_SIZE=30 docker compose up -d catalog OUT=results/lab2-pool30 bash scripts/sweep.sh 50 100 200 300 400 500 600
max_connections
K6_WEB_DASHBOARD=true K6_WEB_DASHBOARD_EXPORT=results/lab2-stress.html \ k6 run -e PEAK=600 load/stress.js
Roteiro: (1) por que medir antes de otimizar; (2) modelos fechado vs aberto; (3) os scripts; (4) medidores de dentro; (5) a varredura e o joelho; (6) a Lei de Little e o pool; (7) mudar o gargalo de lugar; (8) estresse.