FreeBSD Écoute des dépassements de queue – ne peut pas augmenter la taille maximale de la queue

J'ai un server Nginx FreeBSD à grande vitesse et je commence à générer un grand nombre de débordements de file d'écoute:

[root@svr ~]# netstat -sp tcp | fgrep listn 80361931 listn queue overflows [root@svr ~]# netstat -Lan | grep "*.80" tcp4 192/0/128 *.80 [root@svr ~]# sysctl kern.ipc.somaxconn kern.ipc.somaxconn: 12288 [root@svr ~]# 

Cependant, je ne parviens pas à augmenter la longueur maximale de la file d'écoute après 128. J'ai augmenté kern.ipc.somaxconn, mais ça ne change pas le maximum. Est-ce que je manque quelque chose?

Merci!

Peut être une queue d'écoute limitée à 128 dans la configuration nginx

Regardez la configuration nginx pour les parameters comme:

 listn 80 backlog=128; 

Et soit supprimer le carnet de commands (la valeur par défaut est -1 = utiliser la limite du système), soit passer à une plus grande valeur (8192 devrait être suffisant même pour le server chargé). Si même avec une queue d'écoute accrue, vous pouvez toujours voir le dépassement de queue d'écoute, cela peut indiquer que nginx est bloqué pendant une longue période (en raison d'un disque dur lent / surchargé ou d'un module tiers défectueux).

Le kern.ipc.somaxconn pourrait ne pas faire ce que vous pensez faire. C'est la limite des connections exceptionnelles et non gérées . (par exemple, ce n'est pas une limite de connection, mais la limite de connection de la poignée en attente ).

Pour utiliser une analogie non-informatique: c'est le nombre maximal de téléphones de sonnerie (avant qu'ils ne soient récupérés et répondu), pas le nombre d'appels téléphoniques simultanés maximum.

Si vous avez un carnet de commands important, alors votre besoin de laisser votre application récupérer le téléphone plus souvent (par exemple, lui donner plus de ressources, plus de CPU, un meilleur cadre, quoi qu'il en soit).

Notez que la section http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/configtuning-kernel-limits.html">FreeBSD handbook sur les limites du kernel indique ceci: (Emphasis mine).

La variable sysctl kern.ipc.somaxconn limite la taille de la queue d'écoute pour accepter de nouvelles connections TCP. La valeur par défaut de 128 est généralement trop faible pour une gestion robuste des nouvelles connections dans un environnement de server Web fortement chargé. Pour de tels environnements, il est recommandé d'augmenter cette valeur à 1024 ou plus. Le démon de service peut lui-même limiter la taille de la file d'écoute

Je n'ai aucune expérience avec Nginx, mais vérifie également ses files de configuration pour la limite mentionnée ci-dessus du côté de l'application.