Product
Ce qui s’est passé hier et ce que nous faisons pour y remédier
Rapport publié le 19 septembre 2013.
La journée d’hier a été difficile pour les clients de Mailgun. Nous avons subi d’importants retards et des envois en double d’emails entre environ 20 h 40 UTC et 4 h 40 UTC. Bien que nous n’ayons aucune preuve de messages perdus, les retards d’envoi d’emails ont été considérables. Cette situation est inacceptable. C’est pourquoi nous souhaitons vous présenter un aperçu de ce qui s’est passé et de ce que nous faisons pour éviter que cela ne se reproduise.
Que s’est-il passé ?
À 20 h 40 UTC, nous avons reçu un pic de messages qui a déclenché une série de pannes en cascade dans notre système. Ces pics sont généralement gérés par Mailgun sans problème, mais dans ce cas précis, cela a déclenché un bug dans Mailgun qui a ralenti nos clusters Riak en les surchargeant de requêtes inutiles et en consommant un espace de stockage excessif. L’augmentation de la charge sur le cluster a déclenché le ramasse-miettes sur les nœuds, ce qui a aggravé la situation. Riak a tenu bon (merci à l’équipe Basho pour ce logiciel robuste), mais cela a entraîné d’importants retards de messages. Afin de résoudre le problème immédiat, nous avons redémarré plusieurs processus, ce qui, dans certains cas, a entraîné l’envoi de messages en double.
Retards de messages
La baisse des performances globales du système a entraîné la mise en file d’attente des messages, qui n’ont pas été livrés à la vitesse normale. Nous avons identifié le bug et déployé un correctif, mais il nous a fallu un certain temps pour ramener les clusters à leur état normal et vider la file d’attente des messages en retard.
Messages en double
Alors que nos nœuds de livraison ralentissaient, nos scripts monit ont commencé à tuer des nœuds de livraison et à les redémarrer dans le cadre de notre procédure de récupération d’urgence. Cet arrêt brutal et ce redémarrage ont entraîné la livraison de messages en double pour un petit nombre de clients, car certains messages avaient été envoyés sans être marqués comme livrés dans notre système, et ont donc fait l’objet d’une nouvelle tentative après le redémarrage du processus.
Ce que nous faisons pour y remédier
Ce niveau de dégradation des performances pour Mailgun est inacceptable. Nos clients nous font confiance pour livrer leurs emails critiques, et nous les avons déçus. À la suite de cette panne, nous allons mettre en œuvre quelques changements.
Une architecture plus résiliente
Tout d’abord, nous avons identifié le bug dans notre système qui a causé le ralentissement et nous avons déployé un correctif. De plus, nous sommes en train de repenser l’architecture de notre stockage principal et de nos processus de routage afin qu’ils soient plus tolérants aux pannes et plus performants dans de telles situations.
Une meilleure communication sur les incidents
Cet événement a mis en évidence le fait que la page de statut de Mailgun ne reflète pas toujours exactement l’état de Mailgun. Bien que nos services API et SMTP aient été techniquement « disponibles » hier, d’importants retards d’emails constituent, en pratique, un événement qui affecte le service et nous nous devons d’être transparents à ce sujet. Par conséquent, nous avons déjà transféré notre page d’état de Pingdom vers Statuspage.io, afin de centraliser nos alertes d’incident. Vous pourrez vous inscrire aux alertes par SMS, webhook, Twitter ou email, afin d’être informé dès que Mailgun rencontre des problèmes. À plus long terme, nous ajouterons des informations sur la taille de la file d’attente de Mailgun et d’autres statistiques plus représentatives de nos performances. De plus, dans le panneau de configuration Mailgun de chaque client, nous ajouterons davantage de détails sur la taille de sa propre file d’attente et sur ses performances.
Réparer nos erreurs
Nous pensons que Mailgun devrait toujours être disponible et performant. Des retards d’emails importants ne répondent pas à ce critère. Nous proposons un SLA et bien que cela ne soit pas techniquement considéré comme une panne, si votre activité a été impactée, nous tenons à réparer cette erreur. Vous pouvez envoyer un email à sla@mailgun.net pour que nous discutions d’un crédit approprié en compensation de ce problème.
Dans l’ensemble, la journée d’hier a été difficile pour nos clients comme pour nous. Nous sommes sincèrement désolés de ce problème et nous sommes déterminés à faire tout ce qui est en notre pouvoir pour qu’une telle situation ne se reproduise plus.
L’équipe Mailgun