Ubuntu Server 10.04.1 x86
J'ai une machine avec un service HTTP FCGI derrière nginx, qui sert beaucoup de petites requêtes HTTP à beaucoup de clients différents. (Environ 230 demandes par seconde aux heures de pointe, la taille moyenne des réponses avec les en-têtes est de 650 octets, plusieurs millions de clients différents par jour.)
En conséquence, j'ai beaucoup de sockets, suspendus dans TIME_WAIT (le graphique est capturé avec les paramètres TCP ci-dessous):
J'aimerais réduire le nombre de prises.
Que puis-je faire à part ça?
$ cat / proc / sys / net / ipv4 / tcp_fin_timeout 1 $ cat / proc / sys / net / ipv4 / tcp_tw_recycle 1 $ cat / proc / sys / net / ipv4 / tcp_tw_reuse 1
Mise à jour: quelques détails sur la disposition de service réelle sur la machine:
client ----- TCP-socket -> nginx (proxy inverse de l'équilibreur de charge) ----- TCP-socket -> nginx (travailleur) --domain-socket -> logiciel fcgi --single-persistent-persistent-TCP-socket -> Redis --single-persistent-persistent-TCP-socket -> MySQL (autre ordinateur)
Je devrais probablement basculer l'équilibreur de charge -> la connexion de l'ouvrier vers les sockets du domaine également, mais le problème des sockets TIME_WAIT resterait - je prévois d'ajouter bientôt un second ouvrier sur une machine séparée. Ne sera pas en mesure d'utiliser les sockets de domaine dans ce cas.