Ho un problema in un lungo processo chiamato kube-proxy che fa parte di Kubernetes .
Il problema è che di tanto in tanto una connessione viene lasciata nello stato FIN_WAIT2.
$ sudo netstat -tpn | grep FIN_WAIT2
tcp6 0 0 10.244.0.1:33132 10.244.0.35:48936 FIN_WAIT2 14125/kube-proxy
tcp6 0 0 10.244.0.1:48340 10.244.0.35:56339 FIN_WAIT2 14125/kube-proxy
tcp6 0 0 10.244.0.1:52619 10.244.0.35:57859 FIN_WAIT2 14125/kube-proxy
tcp6 0 0 10.244.0.1:33132 10.244.0.50:36466 FIN_WAIT2 14125/kube-proxy
Queste connessioni si accumulano nel tempo, comportando il malfunzionamento del processo. Ho già segnalato un problema al tracker di bug di Kubernetes ma vorrei capire perché tali connessioni non sono chiuse dal kernel di Linux.
Secondo la sua documentazione (ricerca di tcp_fin_timeout) la connessione nello stato FIN_WAIT2 dovrebbe essere chiusa dal kernel dopo X secondi, dove X può essere letto da / proc. Sulla mia macchina è impostato su 60:
$ cat /proc/sys/net/ipv4/tcp_fin_timeout
60
quindi se ho capito bene tali connessioni dovrebbero essere chiuse per 60 secondi. Ma non è così, rimangono per ore in questo stato.
Anche se capisco anche che le connessioni FIN_WAIT2 sono piuttosto insolite (significa che l'host è in attesa di un ACK dall'estremità remota della connessione che potrebbe già essere andato) Non capisco perché queste connessioni non siano "chiuse" dal sistema .
C'è qualcosa che potrei fare al riguardo?
Si noti che il riavvio del processo correlato è l'ultima risorsa.