Résolution du problème d’instabilité du service Kagi.com
- En cours d’investigation - Un problème est survenu après un déploiement et l’équipe travaille à sa résolution. (12 janvier, 16:45 UTC)
- Surveillance - L’équipe a annulé un changement de configuration soupçonné d’être à l’origine du problème et surveille en continu le retour à la normale du service. (12 janvier, 18:30 UTC)
- Mise à jour - Afin de rétablir complètement la stabilité, le trafic sera brièvement interrompu et les utilisateurs seront redirigés vers cette page. Des détails supplémentaires seront fournis à mesure que la situation évolue pendant la restauration contrôlée de la charge sur le service. (12 janvier, 20:26 UTC)
- Surveillance - Le trafic a été rétabli et l’équipe continue de surveiller le retour complet à la normale du service. (12 janvier, 21:14 UTC)
- Résolu - Tous les services fonctionnent normalement. L’équipe remercie les utilisateurs d’avoir patienté pendant la résolution du problème.
Analyse post-incident
- Zac, responsable technique chez Kagi, a partagé une analyse post-incident détaillée de l’interruption de service de la semaine dernière.
- En réponse à cet incident, l’ingénieur senior Seth et l’ingénieur DevOps Luan ont travaillé ensemble.
- Des acteurs ont abusé du service et exploité des goulots d’étranglement de l’infrastructure ; des mesures d’atténuation immédiates ont été prises et des améliorations sont en cours dans plusieurs domaines du code et de la communication.
Déroulement de l’incident
- Le 12 janvier vers 17 h 30, un problème d’infrastructure a été détecté via la surveillance interne et les signalements des utilisateurs.
- La nature du problème provoquait des chargements lents ou des expirations de page pour des utilisateurs dans différentes régions.
- La résolution a pris un temps considérable, et l’équipe a expliqué le contexte, l’évolution de la situation et le plan à venir.
Processus de résolution technique
- Au départ, le problème est survenu par coïncidence au moment d’une augmentation des ressources RAM sur une VM.
- La surveillance signalait une latence élevée et un problème de pool de connexions à la base de données dans l’application.
- Le pool de connexions était arrivé à saturation, ce qui signifiait que le nombre total de connexions dépassait la limite maximale configurée.
- Pendant l’évaluation de l’état interne de la base de données et des performances des requêtes, quelques instances ont été remplacées pour tester l’effet sur la réduction de la congestion.
- Comme le remplacement d’une partie des instances semblait aider, le trafic utilisateur a été temporairement suspendu afin de réinitialiser complètement tous les pools de connexions en une seule fois.
- L’examen de l’état de la base de données a clairement montré que la cause racine était une forte contention sur les lignes de la table des utilisateurs.
- Cette contention a fortement augmenté la latence d’écriture, créant une contre-pression sur le pool de connexions de l’application, jusqu’à épuiser toutes les connexions disponibles.
- Jusqu’à présent, Kagi utilisait la base de données mono-cœur la moins chère disponible sur GCP, ce qui comportait le risque de rendre facilement la base de données inopérante.
- En identifiant les acteurs malveillants, l’équipe a découvert des comptes créés dans les 24 heures ainsi qu’un compte utilisateur unique ayant effectué plus de 60 000 recherches en peu de temps.
- La fonction de recherche a été retirée à ce compte, et un hotfix a été publié pour désactiver l’écriture spécifique à l’origine du problème.
- À minuit, le problème était entièrement résolu, et l’équipe a continué de surveiller de près tout signe de retour de ces acteurs.
Mesures à venir
- Kagi indique avoir beaucoup appris de cet incident et avoir déjà lancé des plans immédiats pour renforcer davantage le système et améliorer le processus de communication en cas d’incident.
- L’entreprise reconnaît d’abord que les mises à jour de la page de statut n’ont pas été assez rapides.
- Elle prévoit de migrer vers une plateforme de page de statut permettant d’exposer plus facilement la surveillance interne automatisée aux utilisateurs, afin qu’ils puissent voir en temps réel l’état de santé de la plateforme.
- L’équipe atténue directement les requêtes problématiques et mène des tests de charge pour déterminer si d’autres failles similaires existent.
- Une surveillance supplémentaire sera mise en place pour pointer plus rapidement vers le bon emplacement dans l’infrastructure et éviter de perdre du temps à suivre de faux signaux comme ce fut le cas cette fois.
- Les systèmes de détection de ce type d’abus sont également en cours de renforcement, et comme ils ont un impact direct non seulement sur les performances mais aussi sur les coûts, il est nécessaire de mettre en place des limitations automatisées pour les faire respecter.
- Les nouvelles limitations étaient déjà en vigueur au moment de cette publication, et leur impact sera surveillé tout en continuant à les ajuster si nécessaire.
- Kagi demande à toute personne pensant avoir été bloquée à tort dans son accès au service de contacter support@kagi.com.
L’avis de GN⁺
- Kagi a subi un problème de latence d’écriture causé par une contention sur les lignes de la table des utilisateurs, ce qui a créé une contre-pression sur le pool de connexions de l’application et provoqué l’interruption du service.
- Ce problème était la conséquence du risque lié à l’utilisation par Kagi de la base de données mono-cœur la moins chère sur GCP.
- À travers cet incident, l’équipe Kagi montre sa volonté d’améliorer la stabilité et la transparence du service en prenant des mesures pour renforcer le système, améliorer la communication avec les utilisateurs et mettre en place des limitations automatisées pour prévenir les abus. Ces efforts reflètent la volonté de Kagi de fournir un service plus fiable à ses utilisateurs.
1 commentaires
Avis sur Hacker News
Avis sur l’incident survenu en même temps qu’une mise à niveau de l’infrastructure
Expérience d’un utilisateur avec la page de statut de Kagi
Commentaire partageant une expérience personnelle
Commentaire sur l’expérience des startups
Commentaire sur l’observabilité des systèmes internes
Avis d’un utilisateur payant sur la fiabilité de Kagi
Commentaire sur le scraper à l’origine de l’interruption de service
Commentaire sur l’expérience d’utilisation de Kagi et la post-mortem
Commentaire sur la base de données monocœur utilisée sur GCP
Commentaire sur le scraping automatisé