ฉันมีปัญหาในกระบวนการระยะยาวที่เรียกว่า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 บางตัวจากระยะไกลของการเชื่อมต่อซึ่งอาจหายไปแล้ว) ฉันไม่เข้าใจว่าทำไมการเชื่อมต่อเหล่านี้จึงไม่ "ปิด" โดยระบบ .
มีอะไรที่ฉันทำได้บ้างไหม?
โปรดทราบว่าการรีสตาร์ทกระบวนการที่เกี่ยวข้องเป็นวิธีสุดท้าย