T 2008 में TIME_WAIT राज्य में TCP कनेक्शन के टोंस - amazon AWS पर चल रहे हैं


17

OS: Windows Server 2008, SP2 (EC2 Amazon पर चल रहा है)।

Apache httpd और tomcat सर्वर 6.02 और वेब सर्वर का उपयोग करके वेब ऐप चलाने से सेटिंग जीवित रहती है।

TIME_WAIT स्थिति (उपयोग किए गए नेटस्टैट और tcpview) में लगभग 69,250 (http पोर्ट 80) + 15000 (पोर्ट 80 के अलावा) टीसीपी कनेक्शन हैं। वेब सर्वर को रोकने के बाद भी ये कनेक्शन बंद नहीं होते हैं (24 घंटे इंतजार किया गया)

प्रदर्शन की निगरानी काउंटर:

  • टीसीपी 4 सक्रिय संपर्क: 145K
  • TCPv4 निष्क्रिय कनेक्शन: 475K
  • TCPv4 विफलता कनेक्शन: 16K
  • TCPv4 कनेक्शन रीसेट: 23K

HKEY_LOCAL_MACHINE\System \CurrentControlSet\Services\Tcpip\Parameters TcpTimedWaitDelay कुंजी नहीं है, इसलिए मान डिफ़ॉल्ट होना चाहिए (2 * MSL, 4 मिनट)

यहां तक ​​कि अगर हजारों कनेक्शन अनुरोध एक ही समय में आ रहे हैं, तो विंडोज़ ओएस उन्हें अंततः साफ करने में सक्षम क्यों नहीं है?
इस स्थिति के पीछे क्या कारण हो सकते हैं?
क्या विंडोज़ ओएस को पुनरारंभ किए बिना इन सभी TIME_WAIT कनेक्शनों को बलपूर्वक बंद करने का कोई तरीका है?

कुछ दिनों के बाद हम किसी भी नए कनेक्शन को लेना बंद कर देते हैं।

जवाबों:


14

हम इस मुद्दे से भी निपट रहे हैं। ऐसा लगता है कि अमेज़ॅन ने मूल कारण पाया और इसे सही किया। यहाँ जानकारी है कि उन्होंने मुझे दिया है।

नमस्ते, मैं इस मुद्दे पर क्या कारण था की एक व्याख्या नीचे चिपका रहा हूँ। अच्छी खबर यह है कि यह हमारी इंजीनियरिंग टीम द्वारा हाल ही में तय किया गया है। ठीक करने के लिए, आपको बस इतना करना होगा कि आप Windows Server 2008 के उदाहरणों को रोकें / रोकें जहां आप यह समस्या देख रहे हैं। फिर से, मैं रेबोट के बारे में बात नहीं कर रहा हूं जो अलग है। STOP / START एक भिन्न (स्वस्थ) होस्ट में ले जाने के लिए आवृत्ति का कारण बनता है। जब ये उदाहरण फिर से लॉन्च होते हैं, तो वे उन मेजबानों पर चलेंगे जिनके पास जगह तय है इसलिए उनके पास फिर से यह मुद्दा नहीं होगा। अब नीचे इस मुद्दे की इंजीनियरिंग व्याख्या है। गहराई से जांच के बाद, हमने पाया है कि सबसे उपलब्ध उदाहरण प्रकारों पर विंडोज 2008 x64 चलाते समय, हम ' एक समस्या की पहचान की, जिसके परिणामस्वरूप टीसीपी कनेक्शन हो सकते हैं जो TIME_WAIT / CLOSE_WAIT में अधिक समय तक बने रहते हैं (कुछ मामलों में, इस अवस्था में शेष रहते हैं)। जबकि इन राज्यों में, विशेष सॉकेट जोड़े अनुपयोगी बने रहते हैं और यदि पर्याप्त जमा होते हैं, तो प्रश्न में बंदरगाहों के लिए बंदरगाह की थकावट होगी। यदि यह विशेष परिस्थिति होती है, तो प्रश्न में सॉकेट जोड़े को खाली करने का एकमात्र समाधान प्रश्न में उदाहरण को रिबूट करना है। हमने विंडोज 2008 कर्नेल एपीआई में टाइमर फ़ंक्शन द्वारा उत्पादित मानों का कारण निर्धारित किया है, जो कि हमारे 64-बिट प्लेटफार्मों में से कई पर, कभी-कभी एक मान प्राप्त करेंगे जो भविष्य में बहुत दूर है। यह टीसीपी सॉकेट जोड़े पर टाइमस्टैम्प का कारण बनकर टीसीपी स्टैक को प्रभावित करता है ताकि भविष्य में काफी दूर हो सके। Microsoft के अनुसार, एक संग्रहीत संचयी काउंटर है जिसे तब तक अपडेट नहीं किया जाएगा जब तक कि इस API कॉल द्वारा उत्पादित मूल्य संचयी मान से बड़ा न हो। अंतिम परिणाम यह है कि इस बिंदु के बाद बनाई गई सॉकेट्स को भविष्य में बहुत दूर तक मोहर दी जाएगी, जब तक कि भविष्य का समय पूरा न हो जाए। कुछ मामलों में, हमने भविष्य में कई सौ दिनों के इस मूल्य को देखा है, इस प्रकार सॉकेट जोड़े हमेशा के लिए अटक जाते हैं।


यह धागा दो सप्ताह पुराना है, और किसी तरह आपने मुझसे पहले उनकी प्रतिक्रिया सेकंड में पोस्ट की । उत्कृष्ट खबर! वे अब हमें महीनों से भगा रहे हैं।
मार्क बोलिंगर

@MarcBollinger: आपके द्वारा उल्लिखित थ्रेड के लिए AWS टीम की प्रतिक्रिया के माध्यम से आपका जवाब मिल गया ( System.Diagnostics.Stopwatch काम नहीं कर रहा है ) - यह धागा अभी भी अनुत्तरित है, लेकिन आपकी टिप्पणी यहाँ इंगित करती है कि यह वास्तव में पहले से ही संबोधित किया जा सकता है। info @GregB उद्धृत? या QueryPerformanceCounterसमस्या का मूल कारण अभी भी हो सकता है और केवल टीसीपी मुद्दे को ही हटा दिया गया है? आपकी अंतर्दृष्टि के लिए धन्यवाद!
स्टीफन ओपल

4

रयान का जवाब अच्छी सामान्य सलाह है, सिवाय इसके कि यह उस शर्त पर लागू नहीं होता है जो EC2 में हो रही है। हमने भी इस समस्या को देखा है और जिस भी कारण से Windows TcpTimedWaitDelay को पूरी तरह से अनदेखा कर रहा है और कभी भी अपने TIMED_WAIT राज्य से सॉकेट जारी नहीं कर रहा है।

प्रतीक्षारत मदद नहीं करता है ... एप्लिकेशन को पुनरारंभ करने से मदद नहीं मिलती है ... एकमात्र उपाय जो हमने पाया है वह है ओएस को पुनरारंभ करना। वास्तव में बदसूरत।


3

मैंने एक अलग मुद्दे पर डिबग करते समय पूरी तरह से यादृच्छिक रूप से इस धागे को पाया, लेकिन यह EC2 पर विंडोज के साथ थोड़ा-सा-अप, लेकिन अच्छी तरह से ज्ञात मुद्दा है। हमारे पास प्रीमियम समर्थन था, और उस चैनल के माध्यम से गैर-सार्वजनिक सेटिंग में उनके साथ इस पर चर्चा की, लेकिन यह एक संबंधित मुद्दा है जिसे हमने सार्वजनिक मंचों पर चर्चा की थी

जैसा कि दूसरों ने उल्लेख किया है, आपको बॉक्स से विंडोज सर्वर को ट्यून करने की आवश्यकता है। हालाँकि, इसी तरह से स्टॉपवॉच उपरोक्त धागे में काम नहीं कर रहा है, टीसीपी / आईपी स्टैक भी QueryPerformanceCounterकॉल का उपयोग करता है यह निर्धारित करने के लिए कि टीसीपी_TIME_WAIT अवधि कब तक होनी चाहिए। समस्या यह है कि EC2 पर, वे सामना कर चुके हैं, और जानते हैं, एक ऐसे मुद्दे के बारे में, जिसमें QueryPerformanceCounterhaywire जाता है, और भविष्य में दूर तक लौट सकता है; ऐसा नहीं है कि आपके TIME_WAIT राज्य को अनदेखा किया जा रहा है, यह है कि TIME_WAIT की समाप्ति अवधि संभावित रूप से भविष्य में वर्ष है। जब एक httpd सेटिंग में चल रहा है, तो आप देख सकते हैं कि राज्य का सामना करने के बाद आप इन ज़ोंबी सॉकेट्स को कैसे जल्दी से जमा करते हैं (हम आम तौर पर देखते हैं कि यह एक असतत घटना है, न कि आप धीरे-धीरे लाश जमा करते हैं)।

हम जो करते हैं वह पृष्ठभूमि में एक सेवा को चलाता है जो TIME_WAIT स्थिति में सॉकेट की संख्या पर सवाल उठाता है, और एक बार यह एक निश्चित सीमा से अधिक हो जाता है, हम कार्रवाई करते हैं (सर्वर को रिबूट करते हैं)। किसी तरह से पिछले 45 सेकंड में , किसी ने इंगित किया कि आप समस्या को ठीक करने के लिए सर्वर को रोक / शुरू कर सकते हैं - मेरा सुझाव है कि आप इन दो दृष्टिकोणों को जोड़े।


2

विंडोज़ में टीसीपी स्टैक के लिए डिफ़ॉल्ट सेटिंग्स कम से कम कहने के लिए है, उन सिस्टमों के लिए इष्टतम नहीं है जो एक HTTP सर्वर की मेजबानी करने जा रहे हैं।

HTTP सर्वर के रूप में उपयोग किए जाने पर अपनी विंडो मशीन से सर्वश्रेष्ठ प्राप्त करने के लिए, कुछ पैरामीटर हैं जो आप सामान्य रूप से MaxUserPort TcpTimedWaitDelay, TcpAckFrequency, EnableD DynamicsBacklog, KeepAliveInterval आदि की तरह ट्वीक करेंगे।

मैंने कुछ साल पहले इस पर स्वयं के लिए एक नोट लिखा था, बस अगर मुझे शुरू करने के लिए कुछ त्वरित चूक की आवश्यकता होती है। मापदंडों को समझने के लिए स्वतंत्र महसूस करें और फिर उन्हें ट्वीक करें।


2

AWS से असंबंधित, हम अभी इस समस्या में भागे हैं, यह इस KB आलेख के परिणामस्वरूप लगता है:

http://support.microsoft.com/kb/2553549/en-us

मूल रूप से, यदि सिस्टम 497 दिनों के लिए है, तो यह किक करता है और हॉटफ़िक्स लागू नहीं किया गया है। एक रिबूट ने, निश्चित रूप से इसे साफ कर दिया है - हम अगले 16 महीनों के लिए नहीं जान सकते हैं यदि हॉटफ़िक्स ने काम किया है, लेकिन यह किसी ऐसे व्यक्ति की मदद कर सकता है जिसके पास लंबे समय तक सर्वर है।


क्या अजीब दिनों की संख्या है। हमें बस इससे भी काट दिया गया - 500 दिन 12 घंटे अपटाइम। वैसे भी इस बॉक्स को डिकम करने का समय।
जोश स्मेटन

0

मैं SP1 के साथ Windows Server 2008 R2 x64 के साथ कई बॉक्सों पर लगभग सटीक एक ही बात का अनुभव कर रहा था, ज्यादातर CLOSE_WAIT के साथ (जो TIME_WAIT से कुछ अलग है)। मैं इस जवाब में टकरा गया जिसने Microsoft पर एक KB और एक हॉटफ़िक्स का संदर्भ दिया यदि सर्वर एक लोड बैलेंसर (जो मेरा है) के पीछे चल रहे थे। हॉटफ़िक्स स्थापित करने और रिबूट करने के बाद, सभी CLOSE_WAIT सामग्री हल हो गई थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.