# Scripts k6 — Plan de estrés IPSExtractor Requieren [k6](https://k6.io/docs/get-started/installation/) y el stack en `http://127.0.0.1:8189`. ## Entorno de referencia (obligatorio en informes) Las pruebas de carga del proyecto se calibran para el host: - **Hostname:** `ubuntu` (ASUS X441UAK) - **SO:** Ubuntu 24.04.4 LTS - **CPU / RAM:** i5-7200U, 8 GiB - **Docker compartido** con MLflow (~1.8 GiB), Airflow, n8n, MinIO, etc. Antes de cada corrida, adjuntar al informe: ```bash hostnamectl | head -5 free -h docker stats --no-stream curl -s -w '\ntime=%{time_total}s\n' http://127.0.0.1:8189/health/live ``` ## Perfiles (`PROFILE`) | Valor | Cuándo | |-------|--------| | `shared8g` (default) | Host actual con otros contenedores | | `lab` | Solo IPSExtractor, ≥3 GiB libres | ## Variables | Variable | Default | Descripción | |----------|---------|-------------| | `BASE_URL` | `http://127.0.0.1:8189` | Gateway | | `PROFILE` | `shared8g` | Perfil de carga | | `BOT_API_TOKEN` | `dev-token-change-me` | Bearer bot | | `DOWNLOAD_JOB_ID` | — | Obligatorio en events | | `WORKER_PREFIX` | `load-w` | Prefijo heartbeats | | `PDF_B64` | (PDF mínimo) | PDF para count | ## Ejecución ```bash k6 run -e PROFILE=shared8g -e BASE_URL=http://127.0.0.1:8189 k6_gateway_health.js k6 run -e PROFILE=shared8g -e BOT_API_TOKEN=dev-token-change-me k6_bot_heartbeats.js k6 run -e PROFILE=shared8g -e DOWNLOAD_JOB_ID= k6_bot_events.js k6 run -e PROFILE=shared8g k6_smoke_suite.js # Solo si free -h muestra ≥3GiB disponibles: k6 run -e PROFILE=shared8g k6_count_batches.js # o Python (PDFs reales, Windows-friendly): .\docs\plan_pruebas\scripts\st_count_01_bench.ps1 -Profile shared8g # Latencia count-api con PDFs reales: bash docs/plan_pruebas/scripts/measure_count_latency.sh # Latencia LLM ST-EXT-02 (mismo schema/campos, gpt-5.4-mini): bash docs/plan_pruebas/scripts/st_ext_02_llm_bench.sh # Windows: .\docs\plan_pruebas\scripts\st_ext_02_llm_bench.ps1 -Limit 10 # Cola ARQ ST-EXT-01 (LLM mock, sin coste OpenAI): # 1) Mock (otra terminal) + extraction con ASYNC_QUEUE=true y EXTRACTOR_BASE_URL→mock bash docs/plan_pruebas/scripts/llm_mock_server.sh # 2) Bench (shared8g ≈30 docs / lab ≈200): bash docs/plan_pruebas/scripts/st_ext_01_arq_bench.sh PROFILE=lab ARQ_BENCH_LIMIT=100 bash docs/plan_pruebas/scripts/st_ext_01_arq_bench.sh # Windows: # .\docs\plan_pruebas\scripts\llm_mock_server.ps1 # .\docs\plan_pruebas\scripts\st_ext_01_arq_bench.ps1 -Profile shared8g -Limit 30 # .\docs\plan_pruebas\scripts\st_ext_01_arq_bench.ps1 -StartMock -Limit 20 ``` Modelo de capacidad 100k/mes: [`estimate_capacity.md`](estimate_capacity.md). Informe PDF: [`../InformePruebas_IPSExtractor.pdf`](../InformePruebas_IPSExtractor.pdf). PDFs de prueba: [`../data/`](../data/) (`500000284335937.pdf`, `...940.pdf`, `...954.pdf`). Tras el bench LLM: resultados en [`../informe/sections/13_llm_latency.tex`](../informe/sections/13_llm_latency.tex) (CSV `informes/llm_latency_20260717.csv`). Schema: `informes/st_ext_02_schema.json`.