Le post d'hier sur la récente interruption de GitHub a mentionné un détail qui a été négligé : la politique de mise à l'échelle automatique mal configurée sur le service avec le Istio sidecar saturé. La politique surveillait la charge du service hôte mais pas les limites du sidecar, ce qui a entraîné un échec de la mise à l'échelle automatique.
La mise à l'échelle automatique ajuste les ressources en fonction de la charge actuelle. Bien que l'utilisation du CPU soit une mesure courante, les services peuvent devenir saturés même avec une faible utilisation du CPU. Par exemple, les modèles de thread-par-demande peuvent connaître une saturation lorsque la latence en aval provoque le blocage de tous les threads sur les E/S, comme cela s'est produit pour Slack en 2021.
Le compte rendu de GitHub suggère que la politique de mise à l'échelle automatique n'a pris en compte que la charge au niveau du service, ignorant le sidecar Istio. Cela met en évidence la fallacie de substitution des composants identifiée par David Woods - se concentrer uniquement sur la réparation des composants individuels plutôt que sur la compréhension des interactions du système. L'interruption impliquait plusieurs facteurs interactifs : des modèles de trafic changeants, la politique de mise à l'échelle automatique, la saturation du sidecar Istio, la logique de réessai, la saturation des nœuds HAProxy et le trafic d'authentification.
Entités clés : Entreprises : GitHub, Slack | Personnes : David Woods
Source: Hacker News · Résumé par HeadlinesBriefing