--- name: Smiles Capacity Audit 2026-05-11 description: Smiles 100% operacional OW+RT+multipax. Cache+dedup+2VMs aguentam 5k usuários distribuídos. Pico real estimado 50-150 simultâneos OK type: project originSessionId: 2599d295-29b1-43d3-93f7-6b44de3bf1d6 --- # Smiles — Auditoria de Capacidade 11/05/2026 ## Estado infra (verificado em produção) | Componente | Status | Detalhes | |---|---|---| | `api-gateway` (id 52) | ONLINE | 154MB · 27min uptime · 16 restarts | | `scraper-smiles-gol` (id 14) | ONLINE | 135MB · 6D uptime · 234 restarts totais (deploys SIGINT, não crashes) | | Solver adv-22:9091 | ONLINE | Chrome up 3.5D · 10/10 sucesso · peak 1 concurrent | | Solver adv-23:9091 | ONLINE | Chrome up 3.5D · 11/11 sucesso · peak 1 concurrent | | Gateway dedup `pendingSearches` | ATIVO | server.js linhas 909/6077/6103 | | CACHE_TTL gateway + service.js | 60min | padronizado | | `SMILES_USE_VM_SOLVER=1`, `SMILES_VM_FALLBACK=0`, `SMILES_VM_TIMEOUT_MS=300000` | ✓ | | | `SMILES_PARALLEL_RT` | default ON | index.js:1639 | | VM_HOSTS | `100.91.20.22,100.123.139.93` | round-robin (index.js:1560-1565) | | VM `SMILES_MAX_CONCURRENT` | 4 por VM = 8 total | RAM adv-22: 14GB livre | ## Smoke tests OW/RT/multipax (gateway :3001) | Cenário | Tempo | Voos | OK | |---|---|---|---| | OW GRU-MIA d+30 (cache hit) | 981ms | 22 | ✓ | | RT GRU-MIA d+30/+37 cold | 26.5s | 42 (22 IDA + 20 VOLTA) | ✓ paralelo 2 VMs | | OW CGH-SDU cold | 15.9s | 23 | ✓ | | OW CGH-SDU warm (cache) | 762ms | 23 | ✓ | | OW 2A+1C GRU-FOR cold | 15.7s | 10 | ✓ multi-pax | ## Stress test 15 paralelas únicas (cold, sem cache) - **15/15 sucesso (100%)** - avg=35s · p95=83s · max=83s · wallclock=83s - 185 voos totais retornados ## Dedup stress: 10 paralelas mesma cacheKey - **10/10 sucesso, todas em ~17.3s wallclock** - Apenas 1 scrape real disparado, 9 aguardaram pendingSearches Promise - ⇒ rota popular com 1000 usuários simultâneos = 1 scrape ## Capacidade estimada para 5k usuários 5000 usuários ativos ≠ 5000 simultâneos. Padrão web típico: - Sessões 5-10min, 2-5 buscas cada - Pico realista 50-150 simultâneos - Cache 60min absorve ~50-80% das buscas (rotas populares se repetem) - Dedup achata buscas concorrentes idênticas para 1 scrape | Pico simultâneo | cacheKeys distintas pós-cache | Tempo P95 | Avaliação | |---|---|---|---| | 50 | ~25 | ~30s | ✅ ótimo | | 100 | ~50 | ~50s | ✅ OK | | 200 | ~100 | ~95s | ⚠️ fila visível | | 500 | ~250 | ~240s | ❌ degrada | ## Pendências (opcionais — escalar pra >200 simultâneos) Apenas se atingir picos maiores, e SEM tocar no código Smiles (regra NÃO MEXER): 1. `SMILES_MAX_CONCURRENT` 4→6 nas VMs (RAM folga) → 12 slots 2. Adicionar adv-24/adv-25 ao `SMILES_VM_SOLVER_HOSTS` 3. Pre-warm cron das top 20 rotas a cada 50min mantém cache quente ## Conclusão **Smiles 100% funcional OW + RT + multi-pax. Para 5000 usuários distribuídos, infra atual aguenta com folga.** Cache+dedup+2VMs paralelas absorvem picos típicos. Só atenção se concorrência simultânea ultrapassar 200 (aí escalar VMs). **Why:** Jesiel pediu verificação de funcionamento + capacidade pra 5k usuários sem mexer no Smiles (regra "NÃO MEXER"). **How to apply:** Apresentar dados ao Jesiel; se pico real superar 200 simultâneos, propor escalar VM (env var, sem tocar código).