Incident post mortem : 19 mai 2021


Résumé

les applications mobiles Coinbase et Coinbase Pro

La panne

Il y a eu une forte augmentation du trafic en raison de la réaction de nombreux utilisateurs à une baisse soudaine des prix sur le marché de la cryptographie menant à cet incident (ETH a chuté de 20%, BTC a chuté de 25%). Un groupe d’ingénieurs oncall s’est réuni après avoir été paginé pour des taux d’erreur élevés sur plusieurs services.

Les services concernés étaient:

/li>

Incident post mortem : 19 mai 2021

  • Service GraphQL : Cela a entraîné un chargement très lent de certaines parties de l’application mobile et une erreur d’environ 10% du temps
  • API Coinbase Pro : Cela a rendu Coinbase Pro partiellement inaccessible
  • Service de traitement des paiements par carte hors des États-Unis: Cela a entraîné le rejet des clients non américains qui tentaient d’acheter de la crypto avec une carte
  • Une fois ces problèmes identifiés, les ingénieurs se sont répartis en différents groupes pour étudier chaque problème en parallèle et prioriser les actions de suivi.

    Analyse de la cause originelle

    Le pic rapide des demandes a fini par atteindre un seuil maximal de connexions de routeur Nginx, qui a été augmenté manuellement pendant l’incident. Cela a finalement résolu le goulot d’étranglement

    Réponse HTML de NodeJS2. Nous avons constaté des délais d’expiration et une latence accrue sur notre service GraphQL, qui regroupe les données des services sous-jacents. Les délais d’attente ont été causés par l’autoscaling de GraphQL trop lentement. L’autoscaling a finalement rattrapé son retard et les erreurs ont disparu, restaurant les fonctionnalités de l’application mobile et des utilisateurs connectés.

    Erreurs GraphQL3. Nous avons vu que la base de données qui alimente l’échange Coinbase Pro avait une latence et une charge CPU élevées. De plus, les serveurs API qui exécutent notre flux de données de marché étaient soumis à une charge CPU élevée. Nous avons augmenté le débit des opérations configuré sur la base de données et avons également provisionné davantage de serveurs API.

    Temps de réponse de l’API Coinbase Pro4. Dans notre service de traitement des paiements par carte hors des États-Unis, le nombre d’échecs de paiement augmentait à mesure que la file d’attente pour traiter les paiements devenait arriérée. Nous avons augmenté le nombre de travailleurs en file d’attente et les paiements par carte ont commencé à réussir.

    Taille de la file d’attente

    Améliorations

    y compris des tests de charge réguliers pour nous préparer aux périodes de trafic élevé. Cependant, cet incident a identifié certains angles morts à résoudre, en particulier autour de pics de trafic très soudains.

    Un thème commun autour de plusieurs des échecs de cet incident était les règles d’autoscaling qui n’étaient pas adaptées à la nature des pics de trafic que les marchés de la cryptographie peuvent provoquer. Nous travaillons à adapter nos tests de charge afin de mieux simuler des situations du monde réel, telles que des pics de trafic soudains. Cela aidera à résoudre davantage de problèmes, tels que des règles d’autoscaling non réglées, lors de tests contrôlés.

    en cas de panne

    Si vous souhaitez résoudre des problèmes de dimensionnement tels que ceux présentés ici

    où les gens poursuivent la conversation en mettant en évidence et en répondant à cette histoire.