Remédier aux temps d’attente élevés et garantir la fiabilité
Hier soir, nous avons subi une panne sur laquelle nous avions promis d’apporter plus de détails. À 22:35 CET, nous avons constaté des temps d’attente élevés dans la file.
Ils étaient principalement dus à 20k Jobs /http/import en attente. Notre autoscaler ne les prenait pas en compte pour augmenter la capacité car, comparés à l’encodage vidéo, ces Jobs sont très peu coûteux et généralement peu nombreux.
Il était clair que cette file ne diminuait pas assez vite, nous avons donc augmenté la capacité manuellement.
Vers 23:00, nous avons remarqué que la file ne diminuait toujours pas très rapidement et que certaines machines semblaient avoir du mal à se mettre en ligne (nous exécutons des tests préalables avant de mettre une machine en production, et certains de ces tests dépassaient le délai imparti).
Il s’est avéré que redis était inaccessible depuis de nombreuses machines (mais pas toutes), alors que le service fonctionnait toujours.
Nous avons effectué quelques tests et constaté ce que nous ne pouvons expliquer autrement que par une panne du réseau local EC2 entre nos machines :
# LAN chan -> Redis
root@chan:~# telnet redis.transloadit.com 6379
Trying 10.192.211.175...
# LAN Redis -> chan (one of our drones)
root@redis2:# telnet chan.transloadit.com 80
Trying 10.241.127.187...
# WAN chan -> Redis
root@chan:~# telnet 107.21.80.77 6379
Trying 107.21.80.77...
Connected to 107.21.80.77.
Escape character is '^]'.
# WAN Redis -> chan (one of our drones)
root@redis2:# telnet 50.17.94.169 80
Trying 50.17.94.169...
Connected to 50.17.94.169.
Escape character is '^]'.
Cela expliquait pourquoi la file /http/import diminuait peu : les Jobs échouaient et étaient automatiquement remis en file.
À 23:10, nous avons déployé un correctif :
- Se connecter à redis via son adresse IP publique
À 23:15, il restait 18 115 Jobs http/import dans la file, et 15 minutes plus tard, ils
avaient tous été traités. Toutefois, pour éviter de réduire la capacité alors que la file contient
autant de Jobs, nous avons déployé un autre correctif :
- Faire en sorte que l’autoscaler tienne compte de la taille de la file de
http/import(et de tous les bots sauf file/filter, même s’ils sont jugés négligeables)
À l’avenir, nous déploierons d’autres améliorations :
- Alterner entre les adresses IP LAN et WAN de redis afin de basculer automatiquement sur l’autre réseau en cas de problème de routage sur l’un d’eux
- Améliorer la journalisation pour repérer ces erreurs plus tôt
Nous avons demandé à Amazon de confirmer cette panne et nous vous tiendrons informés dès qu’ils l’auront fait.
Nous sommes sincèrement désolés pour la gêne occasionnée par cette panne. Comme vous pouvez le constater, nous prenons ces questions au sérieux et travaillons sans cesse à rendre notre plateforme toujours plus robuste, afin que nos clients puissent y bâtir leur activité.
Si vous avez des questions, n’hésitez pas à me les poser sur Twitter ou à ouvrir un ticket de support.
