Uzun süredir devam eden bir süreçte, kube-proxy'nin Kubernetes'in bir parçası olması sorunum var .
Sorun, zaman zaman bir bağlantının FIN_WAIT2 durumunda kalmasıdır.
$ 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
Bu bağlantılar zamanla birikerek işlemin hatalı davranmasını sağlar. Kubernetes hata izleyicisine zaten bir sorun bildirdim, ancak bu tür bağlantıların neden Linux çekirdeği tarafından kapatılmadığını anlamak istiyorum.
FIN_WAIT2 durumundaki belgelerine göre (tcp_fin_timeout araması) bağlantı X saniyesinden sonra çekirdek tarafından kapatılmalı, burada X okunabilir / proc. Makinemde 60 olarak ayarlandı:
$ cat /proc/sys/net/ipv4/tcp_fin_timeout
60
bu yüzden doğru anlarsam bu tür bağlantılar 60 saniye kapatılmalıdır. Ancak durum böyle değil, saatlerce böyle bir durumda kalıyorlar.
Ayrıca FIN_WAIT2 bağlantılarının oldukça sıra dışı olduğunu anlasam da (ana bilgisayarın bağlantının uzak ucundan bazı ACK'yi beklediği anlamına gelir) Bu bağlantıların neden sistem tarafından "kapatılmadığını" anlamıyorum .
Bu konuda yapabileceğim bir şey var mı?
İlgili işlemin yeniden başlatılmasının son çare olduğunu unutmayın.