나는라는 수명이 긴 과정에 문제가있는 KUBE-프록시 의 존재의 일부 는 Kubernetes .
문제는 때때로 연결이 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
이러한 연결은 시간이 지남에 따라 쌓여 프로세스가 잘못 작동합니다. Kubernetes 버그 추적 프로그램에 이미 문제 를 보고 했지만 Linux 커널에서 이러한 연결을 닫지 않은 이유를 알고 싶습니다.
설명서 에 따르면 (TCP_fin_timeout 검색) FIN_WAIT2 상태의 연결은 X 초 후에 커널에 의해 종료되어야합니다. 여기서 X는 / proc에서 읽을 수 있습니다. 내 컴퓨터에서 60으로 설정되었습니다.
$ cat /proc/sys/net/ipv4/tcp_fin_timeout
60
올바르게 이해하면 이러한 연결을 60 초 동안 닫아야합니다. 그러나 이것은 사실이 아니며 몇 시간 동안 그런 상태로 남아 있습니다.
또한 FIN_WAIT2 연결이 매우 드물다는 것을 이해하지만 (이미 호스트가 연결의 원격 끝에서 일부 ACK를 기다리고 있음을 의미합니다) 이러한 연결이 시스템에 의해 "닫히지 않은"이유를 알 수 없습니다 .
내가 할 수있는 일이 있습니까?
관련 프로세스를 다시 시작하는 것이 최후의 수단입니다.