J'ai une machine SLES qui accumule les connexions TCP dans un état CLOSE_WAIT pour ce qui semble être éternel. Ces descripteurs finissent par aspirer toute la mémoire disponible. Pour le moment, j'en ai 3037, mais c'était beaucoup plus élevé avant un redémarrage rapide récemment.
Ce qui est intéressant, c'est qu'ils ne proviennent pas de connexions à des ports locaux auxquels je m'attends à avoir des processus d'écoute. Ils n'ont aucun PID associé, et leurs temporisateurs semblent avoir expiré.
# netstat -ton | grep CLOSE_WAIT
tcp      176      0 10.0.0.60:54882     10.0.0.12:31663      CLOSE_WAIT  off (0.00/0/0)
tcp       54      0 10.0.0.60:60957     10.0.0.12:4503       CLOSE_WAIT  off (0.00/0/0)
tcp       89      0 10.0.0.60:50959     10.0.0.12:3518       CLOSE_WAIT  off (0.00/0/0)
# netstat -tonp | grep CLOSE_WAIT
tcp       89      0 10.0.0.59:45598     10.0.0.12:1998       CLOSE_WAIT  -                   
tcp       15      0 10.0.0.59:60861     10.0.0.12:1938       CLOSE_WAIT  -                   
tcp        5      0 10.0.0.59:56173     10.0.0.12:1700       CLOSE_WAIT  -     
Je ne suis pas une ceinture noire en ce qui concerne la pile TCP ou la mise en réseau du noyau, mais la configuration TCP semble raisonnable, car ces valeurs sont par défaut, selon la page de manuel:
# cat /proc/sys/net/ipv4/tcp_fin_timeout 
60
# cat /proc/sys/net/ipv4/tcp_keepalive_time 
7200
Alors qu'est-ce qui donne? Si les temporisateurs ont expiré, la pile ne devrait-elle pas effacer automatiquement ces éléments? Je me donne effectivement un DoS à long terme à mesure que ces choses s'accumulent.
sudo netstat -tonpde voir avec quel programme cela se produit.