Presion de memoria y fugas de recursos
El sistema consume memoria, descriptores o conexiones de forma progresiva hasta degradar o caerse.
OPERATIVO
🐘 PHP🐍 Python🟢 Node.js☕ Java🔵 .NET🐹 Go🦀 Rust
📈 Que cambia para el negocio
Sirve para razonar estabilidad, limites de recursos y degradacion progresiva antes del colapso.
💼 Que demuestra tecnicamente
Visibiliza un problema silencioso y muy real: procesos que no fallan de inmediato, pero acumulan estado hasta necesitar reinicios o terminar cayendo.
✅ Evidencia que deja
- Compara /batch-legacy y /batch-optimized con estado acumulado entre requests.
- Hace visible retained_kb, descriptor_pressure y pressure_level en el tiempo.
- Expone state, runs y diagnostics/summary para seguir la degradacion progresiva.
👀 Que mirar al ejecutarlo
- Si retained_kb sube en legacy tras varias ejecuciones y se mantiene acotado en optimized.
- Si pressure_level cambia de healthy a warning o critical en el modo defectuoso.
- Si peak_request_kb y retained_after_kb cuentan una historia coherente del leak.
Honestidad: No pretende copiar al milimetro el modelo de memoria de cada runtime. Si deja visible la senal operacional importante: crecimiento silencioso, degradacion progresiva y necesidad de limpieza.
Como esta resuelto en cada stack
PHP 8.3 con estado retenido, presion progresiva y comparacion legacy vs optimized; Python con tracemalloc; Node.js 22 con process.memoryUsage() midiendo heap V8 y RSS reales; Java 21 con LinkedHashMap.removeEldestEntry LRU + Runtime metrics; .NET 8 con LRU manual basado en Dictionary + LinkedList + Process.WorkingSet64
| Stack | Health check local | Compose | Detalle |
|---|---|---|---|
| 🐘 PHP 8.3 | http://localhost:8100/05/health | compose.root.yml | README del stack |
| 🐍 Python 3.12 | http://localhost:8200/05/health | compose.python.yml | README del stack |
| 🟢 Node.js 22 | http://localhost:8300/05/health | compose.nodejs.yml | README del stack |
| ☕ Java 21 | http://localhost:8400/05/health | compose.java.yml | README del stack |
| 🔵 .NET 8 | http://localhost:8500/05/health | compose.dotnet.yml | README del stack |
| 🐹 Go 1.23 | http://localhost:8600/05/health | compose.go.yml | README del stack |
| 🦀 Rust 1.83 | http://localhost:8700/05/health | compose.rust.yml | README del stack |
El expediente completo
El caso no empieza en el codigo: empieza en el sintoma y termina en el postmortem.
ContextoEl sistema y su realidad operativa antes del problema.SintomasQue se observa desde fuera, con numeros.DiagnosticoComo se aisla la causa sin adivinar.Causas raizPor que ocurre, no solo donde duele.OpcionesLas alternativas reales y su coste.Trade-offsQue se gana y que se paga con la opcion elegida.Valor de negocioQue cambia para quien paga el sistema.PostmortemLa historia completa del incidente modelado.Comparativa entre stacksEl veredicto por runtime: que primitiva resuelve el caso y a que precio.