CLOSE_WAIT राज्य में अनाथ कनेक्शन


30

मुझे एक SLES मशीन मिली है जो हमेशा के लिए दिखाई देने वाली CLOSE_WAIT स्थिति में TCP कनेक्शन जमा करती है। ये वर्णनकर्ता अंततः सभी उपलब्ध स्मृति को चूसते हैं। फिलहाल, मुझे उनमें से 3037 मिले हैं, लेकिन हाल ही में जल्दबाजी में रिबूट से पहले यह बहुत अधिक था।

क्या दिलचस्प है कि वे स्थानीय बंदरगाहों से कनेक्शन से नहीं हैं जो मुझे सुनने की प्रक्रिया की उम्मीद है। उनके पास कोई संबद्ध पीआईडी ​​नहीं है, और उनकी समय सीमा समाप्त हो गई है।

# netstat -ton | grep CLOSE_WAIT
tcp      176      0 10.0.0.60:54882     10.0.0.12:31663      CLOSE_WAIT  off (0.00/0/0)
tcp       54      0 10.0.0.60:60957     10.0.0.12:4503       CLOSE_WAIT  off (0.00/0/0)
tcp       89      0 10.0.0.60:50959     10.0.0.12:3518       CLOSE_WAIT  off (0.00/0/0)

# netstat -tonp | grep CLOSE_WAIT
tcp       89      0 10.0.0.59:45598     10.0.0.12:1998       CLOSE_WAIT  -                   
tcp       15      0 10.0.0.59:60861     10.0.0.12:1938       CLOSE_WAIT  -                   
tcp        5      0 10.0.0.59:56173     10.0.0.12:1700       CLOSE_WAIT  -     

जब टीसीपी स्टैक, या कर्नेल नेटवर्किंग की बात आती है, तो मैं ब्लैक-बेल्ट नहीं हूं, लेकिन टीसीपी कॉन्फिग्रेशन समझ में आता है, क्योंकि ये मान डिफ़ॉल्ट हैं, मैन पेज के अनुसार:

# cat /proc/sys/net/ipv4/tcp_fin_timeout 
60
# cat /proc/sys/net/ipv4/tcp_keepalive_time 
7200

तो क्या देता है? यदि समयसीमा समाप्त हो गई है, तो क्या स्टैक स्वचालित रूप से इस सामान को बाहर नहीं निकालना चाहिए? मैं प्रभावी रूप से खुद को एक दीर्घकालिक DoS दे रहा हूं क्योंकि ये चीजें बनती हैं।


ओह, और मेरे शोध से पता चलता है कि अन्य लोग इस तरह की कलाकृतियों को 'lsof -i' में देख रहे हैं। मुझे वहां कुछ भी अजीब नहीं दिख रहा है ।
pboin

2
sudo netstat -tonpयह देखने की कोशिश करें कि यह किस कार्यक्रम के साथ हो रहा है।
बिलथोर

1
पोस्ट और मेरा उत्तर stackoverflow.com/a/17697733/540323 मदद करेगा।
अमिल वडूवारा

जवाबों:


16

नहीं, इसके लिए कोई समय निर्धारित नहीं है CLOSE_WAIT। मुझे लगता है कि offआपके आउटपुट में इसका क्या मतलब है।

बाहर निकलने के लिए CLOSE_WAIT, एप्लिकेशन को स्पष्ट रूप से सॉकेट (या बाहर निकलने) को बंद करना होगा।

देखें कि कैसे CLOSE_WAIT को तोड़ना है

यदि प्रक्रिया कॉलम में netstatदिखाया जा रहा -है:

  • क्या आप उपयुक्त विशेषाधिकारों और क्षमताओं (जैसे रूट के रूप में) के साथ चल रहे हैं?
  • वे कर्नेल प्रक्रियाएं हो सकती हैं (जैसे nfsd)

नेटस्टेट्स करते समय, मेरे पास पूरे निजी थे, हाँ। मैं कर्नेल प्रक्रियाओं के कोण पर जाऊंगा - यह एक अच्छा विचार है। मैं वास्तव में स्तब्ध हूं, क्योंकि दो या तीन जाने-माने विशेषाधिकार प्राप्त बंदरगाहों को छोड़कर, सभी में कोई भी सुनने वाला सॉकेट नहीं होना चाहिए। शायद यह एक अजीब iptables समस्या है। मैं उस की भी जाँच करूँगा।
pboin

1
लिंक टूट गया है।
नाथन


10

CLOSE_WAITइंगित करता है कि क्लाइंट कनेक्शन बंद कर रहा है, लेकिन एप्लिकेशन ने इसे अभी तक बंद नहीं किया है, या क्लाइंट नहीं है। आपको पहचानना चाहिए कि किस कार्यक्रम या कार्यक्रम में यह समस्या आ रही है। netstat -tonp 2>&1 | grep CLOSEकनेक्शन धारण करने के रूप में कौन से प्रोग्राम निर्धारित करने के लिए उपयोग करने का प्रयास करें ।

यदि कोई कार्यक्रम सूचीबद्ध नहीं हैं, तो कर्नेल द्वारा सेवा प्रदान की जा रही है। इन जैसे संभावना आरपीसी सेवाएं हैं nfsया rpc.lockd। कर्नेल सेवाओं को सुनने के साथ सूचीबद्ध किया जा सकता है netstat -lntp 2>&1 | grep -- -

जब तक कि आरपीसी सेवाएं तय बंदरगाहों के लिए बाध्य नहीं होती हैं, वे आपके कनेक्शन दिखाने के लिए पंचांग बंदरगाहों को बांध देंगे। आप अन्य सर्वर पर प्रक्रियाओं और आरोह की जांच करना चाहते हैं।

आप निम्न कार्य करके अपनी NFS सेवाओं को निश्चित बंदरगाहों पर बांधने में सक्षम हो सकते हैं:

  1. NFS के लिए चार अप्रयुक्त बंदरगाहों का चयन करें (32763-32766 यहां उपयोग किया गया)
  2. NFS के लिए निश्चित पोर्ट जोड़ें /etc/services
    rpc.statd-bc 32763 / udp # RCP स्टेटड प्रसारण
    rpc.statd-bc 32763 / tcp
    rpc.statd 32764 / udp # आरसीपी स्टैडर्ड सुनो
    rpc.statd 32764 / tcp
    rpc.mountd 32765 / udp # RPC माउन्ट
    rpc.mountd 32765 / tcp
    rpc.lockd 32766 / udp # RPC लॉकड / nlockmgr
    rpc.lockd 32766 / tcp
  3. विकल्पों का उपयोग करने के लिए प्रतिमा कॉन्फ़िगर करें --port 32763 --outgoing-port 32764
  4. विकल्प का उपयोग करने के लिए rpcmountd कॉन्फ़िगर करें --port 32765
  5. शटडाउन और एनएफएस और आरपीसी सेवाओं को पुनरारंभ करें।

मैंने लिखा कि पीआईडी ​​नहीं थे, लेकिन मैंने अपना काम नहीं दिखाया। मैंने आपके सुझाव के अनुसार एक त्वरित संपादन किया, धन्यवाद।
pboin

@opboin: PIDS (कर्नेल सेवाओं) के बिना बंदरगाहों पर गयी टिप्पणियाँ।
बिलथोर

3
CLOSE-WAIT का मतलब है कि सहकर्मी ने अपना अंत बंद कर दिया है और स्थानीय OS स्थानीय एप्लिकेशन के बंद होने का इंतजार कर रहा है।
user207421
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.