Definición
Un modo de fallo del sistema que surge cuando los recursos finitos necesarios para la operación (memoria, descriptores de archivo, hilos, almacenamiento, ciclos de CPU, ancho de banda de red, energía, etc.) se agotan o dejan de estar disponibles, impidiendo el funcionamiento normal o provocando comportamiento degradado, bloqueado o con fallos.
Principio
Principio
Los sistemas asignan recursos limitados; el funcionamiento correcto depende de la asignación, recuperación y limitación equilibradas. Sin límites, fugas, crecimiento no acotado, contención o mala configuración convierten la capacidad finita en una superficie de fallo.
Demostración
Demostración
Escenario concreto: un servicio de larga duración con una fuga de memoria consume gradualmente el heap hasta que el SO finaliza el proceso por falta de memoria; un servidor que abre sockets por petición supera el límite de descriptores y rechaza nuevas conexiones; un contenedor alcanza cuotas de CPU o memoria y es ralentizado o expulsado por el orquestador.
Aplicación incorrecta
Aplicación incorrecta
Tratar el agotamiento de recursos como simplemente 'demasiado lento' o asumir que siempre se recupera con un reinicio. Otro error es abordar solo un recurso (por ejemplo memoria) y pasar por alto límites correlacionados (manejadores de archivos, puertos efímeros) que en realidad causan la interrupción.
Consecuencia
Consecuencia
Si se diagnostica correctamente, el agotamiento de recursos conduce a correcciones como reparación de fugas, backpressure, pooling, cuotas y degradación controlada; si no se trata, provoca interrupciones intermitentes, condiciones de denegación de servicio, menor fiabilidad y puede desencadenar efectos en cascada (por ejemplo reintentos que amplifican la carga).
Inversión
Inversión
Invertir el diseño pensando en conservación y acotamiento: usar límites de cuotas, circuit breakers, control de admisión, pools de conexión y recuperación explícita de recursos para que los sistemas fallen de forma controlada o rechacen carga en vez de agotar capacidad.
Límite
Límite
Cubre recursos computacionales e infraestructurales finitos y direccionables; excluye fallos de hardware permanentes (aunque puedan parecer similares) y el throttling intencional definido como política. La entrada se centra en el agotamiento de capacidad más que en la ineficiencia algorítmica que reduce el rendimiento sin alcanzar límites absolutos.
Tensión semántica
Tensión semántica
A menudo se confunde con starvation (falta de CPU por planificación), fugas (asignaciones no devueltas progresivamente) y sobrecarga (pico súbito). La tensión es si la causa raíz es la limitación de capacidad finita, la injusticia del scheduler o defectos de software que generan demanda ilimitada.
Síntesis
Síntesis
El agotamiento de recursos es la clase de fallos que ocurren cuando los activos finitos de un sistema se consumen más rápido de lo que pueden reponerse o recuperarse; abordarlo requiere medición, acotamiento, recuperación y controles arquitectónicos para evitar que una depleción local provoque fallos sistémicos.