मेरे पास एक लंबे समय से चली आ रही प्रक्रिया में एक समस्या है जिसे क्यूब-प्रॉक्सी को कुबेरनेट्स का हिस्सा कहा जाता है ।
समस्या यह है कि समय-समय पर एक कनेक्शन 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 बग-ट्रैकर के लिए एक समस्या की सूचना दी थी, लेकिन मैं यह समझना चाहूंगा कि लिनक्स कर्नेल द्वारा ऐसे कनेक्शन बंद क्यों नहीं किए जाते हैं।
अपने प्रलेखन (tcp_fin_timeout के लिए खोज) के अनुसार FIN_WAIT2 राज्य में कनेक्शन X सेकंड के बाद कर्नेल द्वारा बंद कर दिया जाना चाहिए, जहां X को / proc से पढ़ा जा सकता है। मेरी मशीन पर यह 60 पर सेट है:
$ cat /proc/sys/net/ipv4/tcp_fin_timeout
60
इसलिए अगर मैं इसे सही ढंग से समझता हूं तो ऐसे कनेक्शन 60 सेकंड तक बंद होने चाहिए। लेकिन यह मामला नहीं है, उन्हें ऐसे राज्य में घंटों के लिए छोड़ दिया जाता है।
जबकि मैं यह भी समझता हूं कि FIN_WAIT2 कनेक्शन बहुत असामान्य हैं (इसका मतलब है कि मेजबान कनेक्शन के दूरस्थ छोर से कुछ एसीके के लिए इंतजार कर रहा है जो पहले से ही चले गए हो सकते हैं) मुझे नहीं मिलता कि ये कनेक्शन सिस्टम द्वारा "बंद" क्यों नहीं हैं ।
वहाँ कुछ भी मैं इसके बारे में कर सकता है?
ध्यान दें कि संबंधित प्रक्रिया को पुनरारंभ करना एक अंतिम उपाय है।