Ho una macchina SLES che accumula connessioni TCP in uno stato CLOSE_WAIT per quello che sembra essere per sempre. Questi descrittori alla fine assorbono tutta la memoria disponibile. Al momento, ne ho 3037, ma era molto più alto prima di un riavvio rapido di recente.
La cosa interessante è che non provengono da connessioni a porte locali che mi aspetto di avere processi di ascolto. Non hanno PID associati e i loro timer sembrano essere scaduti.
# 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 -
Non sono una cintura nera quando si tratta dello stack TCP o della rete del kernel, ma la configurazione TCP sembra sana, poiché questi valori sono predefiniti, per la pagina man:
# cat /proc/sys/net/ipv4/tcp_fin_timeout
60
# cat /proc/sys/net/ipv4/tcp_keepalive_time
7200
Quindi cosa dà? Se i timer sono scaduti, lo stack non dovrebbe eliminare automaticamente questa roba? Mi sto effettivamente dando un DoS a lungo termine man mano che queste cose si accumulano.
sudo netstat -tonp
a vedere con quale programma si sta verificando.