Aller au contenu

File d'attente d'écoute

File d'attente d'écoute (en anglais listen backlog, accept queue) : file du noyau où attendent les connexions TCP établies qu'une application n'a pas encore acceptées par accept(), dont la taille est demandée à listen() et plafonnée par net.core.somaxconn.

Elle suit la poignée de main : les connexions à moitié ouvertes attendent dans une autre file, la file SYN (net.ipv4.tcp_max_syn_backlog). Le plafond somaxconn vaut 4096 depuis Linux 5.4 (128 avant), et le noyau ramène silencieusement une demande plus grande à ce plafond. Gunicorn demande 2048 par défaut (--backlog). Pour une socket en écoute, les colonnes de ss -ltn changent de sens : Send-Q donne la taille effective de la file, Recv-Q le nombre de connexions qui y attendent. Quand la file déborde, les compteurs nstat -az TcpExtListenOverflows TcpExtListenDrops augmentent et les clients voient des délais de connexion.

Le piège est de monter somaxconn par réflexe : si l'application demande moins, rien ne change, et si la file est pleine, c'est que les workers n'acceptent pas assez vite. Allonger la file ne fait qu'allonger l'attente ; les vraies pistes sont le nombre de workers, les requêtes lentes et la capacité. somaxconn est propre à chaque espace de noms réseau : un conteneur a sa propre valeur.

Dans les cours

Voir aussi