GNU/Linux >> Tutoriels Linux >  >> Linux

L'exécution de lsof -i montre beaucoup de connexions dans CLOSE_WAIT ? Dois-je m'inquiéter

(J'allais modifier la réponse de mikegrb, mais j'ai décidé que je la massacrais un peu trop)

CLOSE_WAIT signifie à peu près exactement ce qu'il dit - le noyau attend que le processus local ferme son descripteur de fichier avant de supprimer l'entrée. La connexion TCP a été complètement détruite et l'extrémité distante peut avoir l'impression que la connexion est finie, mais votre extrémité s'accroche aux choses.

Le seul problème est que beaucoup d'entrées CLOSE_WAIT consomment de la mémoire du noyau et des entrées de la table des descripteurs de fichiers, ce qui peut être un problème s'il y en a beaucoup. Si les entrées que vous consultez sont transitoires, c'est probablement que vous parcourez un lot des connexions TCP, et vous en voyez une petite fraction dans le court laps de temps entre le moment où la connexion est fermée et le processus qui se met à fermer le descripteur de fichier. D'un autre côté, s'ils sont permanents (les ports et les adresses IP ne changent pas avec le temps), alors quelque chose fuit les descripteurs et il doit être corrigé afin qu'il ferme toujours ses fds quand il en a fini avec eux. Comme mikegrb l'a dit, une version plus récente a peut-être déjà résolu le problème, donc une question sur la liste de diffusion pertinente ou l'examen des journaux des modifications est probablement justifié.


L'état CLOSE_WAIT signifie que l'autre extrémité a envoyé un segment FIN pour fermer la connexion. La connexion est toujours en quelque sorte établie. C'est dans un mode que vous pourriez considérer comme semi-duplex, permettant à cette extrémité de vider tous les tampons, en envoyant les derniers bits de données à l'extrémité demandant que la connexion soit fermée avant de fermer la connexion à partir de cette extrémité.

Si vous avez beaucoup de connexions restant dans CLOSE_WAIT, cela signifie que le processus responsable ne ferme pas le socket une fois qu'il est entré dans CLOSE_WAIT. Vous pouvez utiliser tcpdump ou d'autres outils de capture du trafic réseau pour examiner les paquets.

Jetez également un œil au processus responsable. Par curiosité quel est le processus responsable ? Il peut avoir une version corrigée plus récente disponible ou peut-être qu'il est temps de déposer un rapport de bogue ;)


Linux
  1. Sur quel shell suis-je en cours d'exécution ?

  2. La clé d'une tâche Cron exécutée automatiquement qui s'exécute sur Ssh ne devrait-elle pas avoir de phrase secrète ?

  3. L'exécution de "sudo Apt-get Update" renvoie des erreurs de connexion ?

  4. 7 Exemples de commande lsof sous Linux

  5. Comment supprimer une connexion de socket CLOSE_WAIT

Gérer les connexions réseau à partir de la ligne de commande Linux avec nmcli

Commande d'écran Linux :Maintenir les processus en cours d'exécution malgré une connexion interrompue

Linux :il ne reste plus d'espace sur l'appareil alors que la commande df affiche beaucoup d'espace libre

Sous quel utilisateur NGinx et PHP doivent-ils fonctionner ?

Déterminer à quelle heure une connexion TCP actuellement ouverte a été créée ?

Comment calculer max_connections pour PostgreSQL et default_pool_size pour pgbouncer ?