Product
Qué ocurrió ayer y qué estamos haciendo al respecto
Publicado el 19 de septiembre de 2013.
Ayer fue un mal día para los clientes de Mailgun. Sufrimos importantes retrasos y duplicación de emails aproximadamente desde las 20:40 UTC hasta las 04:40 UTC. Aunque no tenemos pruebas de que se hayan perdido mensajes, los retrasos en el envío de emails fueron considerables. Esto es inaceptable, por lo que queremos explicarte qué ocurrió y qué estamos haciendo para evitar que vuelva a suceder.
¿Qué ocurrió?
A las 20:40 UTC, recibimos un pico de mensajes que desencadenó una serie de fallos en cascada en nuestro sistema. Por lo general, Mailgun gestiona estos picos sin problemas, pero en este caso concreto se desencadenó un error en Mailgun que ralentizó nuestros clústeres de Riak al sobrecargarlos con peticiones innecesarias y consumir demasiado almacenamiento. A medida que introducíamos más carga en el clúster, se activó la recolección de basura en los nodos, lo que empeoró la situación. Riak sobrevivió (gracias al equipo de Basho por escribir un software tan robusto), pero provocó importantes retrasos en los mensajes. Para recuperarnos del problema inmediato, reiniciamos varios procesos que, en algunos casos, provocaron el envío de mensajes duplicados.
Retrasos en los mensajes
Al disminuir el rendimiento general del sistema, los mensajes se pusieron en cola, pero no se entregaron a la velocidad habitual. Identificamos el error e implementamos la solución, pero tardamos un tiempo en devolver los clústeres a su estado normal y despejar la cola de mensajes atrasados.
Mensajes duplicados
A medida que nuestros nodos de entrega se ralentizaban, nuestros scripts de monitorización empezaron a eliminar nodos de entrega y a reiniciarlos como parte de nuestro procedimiento de recuperación de emergencia. Este cierre y reinicio forzados hicieron que se entregaran mensajes duplicados a un pequeño grupo de clientes, ya que algunos mensajes se enviaron pero no se marcaron como entregados en nuestro sistema, por lo que se volvieron a intentar enviar tras reiniciar el proceso.
¿Qué estamos haciendo al respecto?
Este nivel de degradación del rendimiento de Mailgun es inaceptable. Nuestros clientes confían en nosotros para entregar sus emails más críticos, y les hemos fallado. Como resultado de esta interrupción del servicio, vamos a implementar algunos cambios.
Una arquitectura más resistente
En primer lugar, hemos identificado el error de nuestro sistema que causó la ralentización e implementado una solución. Además, estamos rediseñando nuestros procesos principales de almacenamiento y enrutamiento para que sean más tolerantes a fallos y ofrezcan un mejor rendimiento en estas situaciones.
Mejor comunicación de las incidencias
Este suceso ha dejado claro que la página de estado de Mailgun no siempre refleja con precisión el estado de Mailgun. Aunque ayer nuestros servicios de API y SMTP estaban técnicamente “disponibles”, en la práctica, los retrasos importantes en los emails suponen un impacto en el servicio, y debemos ser transparentes al respecto. Por ello, ya hemos migrado nuestra página de estado de pingdom a Statuspage.io, para poder ofrecer un único lugar para las alertas de incidencias. Podrás suscribirte a las alertas por SMS, webhook, Twitter o email para saber al instante cuándo experimenta problemas Mailgun. A más largo plazo, añadiremos información sobre el tamaño de la cola de Mailgun y otras métricas que describan mejor el rendimiento. Además, en el panel de control de Mailgun, añadiremos más detalles sobre el tamaño de la cola y el rendimiento específicos de cada cliente.
Cómo lo vamos a solucionar
Creemos que Mailgun siempre debe estar disponible y ofrecer un buen rendimiento. Unos retrasos importantes en los emails no cumplen estos requisitos. Ofrecemos un SLA y, aunque esto no pueda considerarse técnicamente como una interrupción del servicio, si ha afectado a tu negocio, nos gustaría solucionarlo. Puedes enviar un email a sla@mailgun.net y podemos hablar sobre un crédito adecuado como compensación por este problema.
En resumen, ayer fue un día difícil para nuestros clientes y para nosotros. Lamentamos mucho este problema y estamos decididos a hacer todo lo que esté en nuestras manos para asegurarnos de que no vuelva a ocurrir una situación así.
El equipo de Mailgun