Enquête sur un problème de per... Note

Enquête sur un problème de performance du réseau interrégional

Netflix exploite une vaste infrastructure cloud sur Amazon AWS dans plusieurs régions pour faciliter la livraison de contenu en continu. Lorsqu'une application a rencontré des problèmes de synchronisation de données entre les régions, la suspicion initiale s'est portée sur le réseau en raison des timeouts.Lors de l'enquête, les ingénieurs du réseau ont découvert des paquets TCP RST provenant du client, indiquant que le client mettait fin aux connexions de manière prématurée.Les captures de paquets ont confirmé que le serveur envoyait continuellement des données tandis que le client mettait abruptement fin aux connexions après 30 secondes.L'examen de l'application a révélé qu'elle avait un délai d'attente de 30 secondes pour recevoir les données initiales des serveurs, ce qui la conduisait à mettre fin aux connexions si les données n'étaient pas reçues dans ce délai.Malgré aucun changement récent dans l'application ou le serveur, le problème coïncidait avec une mise à jour du noyau Linux de la version 6.5.13 à 6.6.10.La bisection méthodique du noyau a révélé un commit responsable du problème, qui avait introduit un nouveau mécanisme pour calculer la taille de la fenêtre de réception TCP.Le calcul original supposait un overhead de 50%, tandis que le nouveau mécanisme calculait l'overhead de manière dynamique en fonction des caractéristiques réelles des données, ce qui aboutissait à une fenêtre de réception plus petite.Avec une fenêtre plus petite, l'application ne pouvait pas recevoir les données suffisamment rapidement dans le délai de 30 secondes, ce qui entraînait la fin des connexions.La cause profonde était le paramètre sysctl_tcp_adv_win_scale obsolète, qui a été remplacé par un ratio d'échelle plus précis pour calculer la taille de la fenêtre de réception.Le retour en arrière de la mise à jour du noyau a restauré le fonctionnement normal de l'application, démontrant que le changement de noyau était la cause sous-jacente du problème.