Définition
Un mode de défaillance du système qui survient lorsque des ressources finies nécessaires au fonctionnement (mémoire, descripteurs de fichiers, threads, stockage, cycles CPU, bande passante réseau, énergie, etc.) sont épuisées ou deviennent indisponibles, empêchant le fonctionnement normal ou provoquant un comportement dégradé, bloqué ou en panne.
Principe
Principe
Les systèmes allouent des ressources limitées ; le bon fonctionnement repose sur une allocation, une récupération et une limitation équilibrées. Sans bornes, les fuites, la croissance non bornée, la contention ou une mauvaise configuration transforment la capacité finie en surface de défaillance.
Démonstration
Démonstration
Scénario concret : un service de longue durée avec une fuite mémoire consomme progressivement le tas jusqu'à ce que l'OS tue le processus pour manque de mémoire ; un serveur qui ouvre des sockets par requête dépasse la limite de descripteurs de fichiers et refuse de nouvelles connexions ; un conteneur atteint des quotas CPU ou mémoire et est ralenti ou évincé par l'orchestrateur.
Mauvaise application
Mauvaise application
Considérer l'épuisement des ressources comme étant simplement 'trop lent' ou supposer qu'il est toujours récupérable par un redémarrage. Une autre erreur est de ne traiter qu'une seule ressource (par ex. la mémoire) en ignorant des limites corrélées (descripteurs, ports éphémères) qui causent effectivement la panne.
Conséquence
Conséquence
Bien diagnostiqué, l'épuisement des ressources conduit à des correctifs comme la réparation de fuites, la mise en place de backpressure, le pooling, les quotas et la dégradation contrôlée ; s'il n'est pas traité, il provoque des interruptions intermittentes, des conditions de déni de service, une fiabilité réduite et peut se propager (par ex. des réessais amplifiant la charge).
Inversion
Inversion
Inversez la conception en prévoyant la conservation et la borne : utiliser des limites de quota, des coupe-circuits, un contrôle d'admission, des pools de connexions et la récupération explicite des ressources pour que les systèmes échouent de manière contrôlée ou rejettent la charge au lieu d'épuiser la capacité.
Limite
Limite
Couvre les ressources informatiques et d'infrastructure finies et adressables ; exclut les pannes matérielles permanentes (bien qu'elles puissent y ressembler) et le throttling intentionnel mis en place comme politique. L'entrée se concentre sur l'épuisement de capacité plutôt que sur l'inefficacité algorithmique qui réduit le débit sans atteindre des limites absolues.
Tension sémantique
Tension sémantique
Souvent confondu avec l'affamement (perte de CPU due à l'ordonnancement), les fuites (allocations non retournées progressivement) et la surcharge (pic soudain). La tension porte sur la question de savoir si la cause première est la limite de capacité finie, l'injustice d'ordonnancement ou des défauts logiciels provoquant une demande non bornée.
Synthèse
Synthèse
L'épuisement des ressources est la classe de défaillances qui survient lorsque les actifs finis d'un système sont consommés plus vite qu'ils ne peuvent être reconstitués ou récupérés ; le traiter exige mesure, limitation, récupération et contrôles architecturaux pour empêcher qu'une déplétion locale ne devienne une défaillance systémique.