AWS ELB Apache2 503 सेवा अनुपलब्ध: बैक-एंड सर्वर क्षमता पर है


39

अब हम लगभग दो साल से ऐमज़ॉन AWS इन्फ्रास्ट्रक्चर के लिए एक दो वेबसाइट चला रहे हैं और लगभग दो दिन पहले वेबसर्वर ने एक या दो बार एक दिन में एक ही त्रुटि के साथ नीचे जाना शुरू कर दिया है जो मुझे मिल सकता है:

HTTP/1.1 503 Service Unavailable: Back-end server is at capacity

क्लाउडवर्च द्वारा कोई अलार्म (सीपीयू / डिस्क आईओ / डीबी कॉन) चालू नहीं किया जा रहा है। मैंने लोचदार आईपी के माध्यम से ईएलबी को छोड़ने के लिए साइट पर जाने की कोशिश की और यह मिल गया:

HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers. Retrying.

मुझे अपाचे लॉग में साधारण से कुछ भी दिखाई नहीं देता और सत्यापित किया गया कि उन्हें ठीक से घुमाया जा रहा है। एसएसएच के माध्यम से "डाउन" होने पर मुझे मशीन तक पहुंचने में कोई समस्या नहीं है और प्रक्रिया सूची को देखते हुए मुझे 151 अपाचे 2 प्रक्रियाएं दिखाई देती हैं जो मुझे सामान्य लगती हैं। अपाचे को दोबारा चालू करने से समस्या ठीक हो जाती है। यह मशीन एक ईएलबी के पीछे एक वेबसर्वर के रूप में काम करती है। किसी भी सुझाव के लिए बहुत आभार होगा।

CPU उपयोग औसत: 7.45%, न्यूनतम: 0.00%, अधिकतम: 25.82%

मेमोरी उपयोग औसत: 11.04%, न्यूनतम: 8.76%, अधिकतम: 13.84%

स्वैप उपयोग औसत: एन / ए, न्यूनतम: एन / ए, अधिकतम: एन / ए

डिस्क स्पेस यूटिलाइजेशन के लिए / dev / xvda1 पर घुड़सवार / औसत: 62.18%, न्यूनतम: 53.39%, अधिकतम: 65.49%

मुझे स्पष्ट करना चाहिए कि मुझे लगता है कि यह मुद्दा व्यक्तिगत EC2 उदाहरण के साथ है न कि ELB मैं केवल इस बात पर शासन नहीं करना चाहता था कि मैं इलास्टिक आईपी तक पहुंचने में असमर्थ था। मुझे संदेह है कि ईएलबी केवल वास्तविक ईसी 2 उदाहरण को मारने के परिणामों को वापस कर रहा है।

अपडेट: 2014-08-26 मुझे जल्द ही इसे अपडेट करना चाहिए था लेकिन "फिक्स" को "खराब" उदाहरण का स्नैपशॉट लेना था और परिणामस्वरूप एएमआई शुरू करना था। यह तब से नीचे नहीं गया है। जब मैंने अभी भी समस्याओं का सामना कर रहा था तब स्वास्थ्य जांच को देखा और curl http://localhost/page.htmlजब मैं लोड बैलेंसर से क्षमता के मुद्दे प्राप्त कर रहा था तब भी स्वास्थ्य जांच पृष्ठ ( ) पर जा सकता था। मुझे विश्वास नहीं हो रहा है कि यह एक स्वास्थ्य जांच मुद्दा था, लेकिन चूंकि कोई भी, अमेज़ॅन सहित, एक बेहतर जवाब प्रदान नहीं कर सकता है जिसे मैं उत्तर के रूप में चिह्नित कर रहा हूं। धन्यवाद।

अद्यतन: २०१५-०५-०६ मुझे लगा कि मैं यहां वापस आऊंगा और कहूंगा कि इस मुद्दे का जो हिस्सा अब मुझे विश्वास है कि स्वास्थ्य जांच सेटिंग थी। मैं एएमआई के साथ उनकी समस्या होने से इंकार नहीं करना चाहता क्योंकि एएमआई लॉन्च होने के बाद यह निश्चित रूप से बेहतर हो गया था, लेकिन मुझे पता चला कि हमारे स्वास्थ्य की जाँच प्रत्येक लोड बैलेंसर के लिए अलग-अलग थी और यह कि सबसे अधिक परेशानी हो रही थी वास्तव में आक्रामक अस्वास्थ्यकर दहलीज और प्रतिक्रिया मध्यांतर था। हमारा ट्रैफ़िक अप्रत्याशित रूप से बढ़ता है और मुझे लगता है कि आक्रामक स्वास्थ्य जांच सेटिंग और ट्रैफ़िक में स्पाइक्स के बीच यह एक आदर्श तूफान था।


मुझे इसके बारे में अधिक जानकारी मिली: meta.discourse.org/t/…
आंद्रे

जवाबों:


41

आपको "बैक-एंड सर्वर क्षमता पर है" तब मिलेगा जब ईएलबी लोड बैलेंसर अपनी स्वास्थ्य जांच करता है और "पेज न मिला" (या अन्य साधारण त्रुटि) एक गलत कॉन्फ़िगरेशन के कारण प्राप्त करता है (आमतौर पर NameVirtual होस्ट के साथ)।

"ELB-HealthChecker" उपयोगकर्ता एजेंट का उपयोग करके लॉग फाइल फ़ोल्डर को टटोलने का प्रयास करें। जैसे

grep ELB-HealthChecker  /var/log/httpd/*

यह आमतौर पर आपको 4x या 5x त्रुटि देगा जो आसानी से तय हो जाती है। उदाहरण के लिए, बाढ़, MaxClients आदि समस्या को बहुत अधिक श्रेय दे रहे हैं।

FYI करें अमेज़ॅन: अनुरोध से लौटी प्रतिक्रिया क्यों नहीं दिखाते हैं? यहां तक ​​कि एक स्थिति कोड भी मदद करेगा।


17

मैं बस इस मुद्दे में खुद भाग गया। यदि कोई स्वस्थ उदाहरण नहीं हैं, तो Amazon ELB यह त्रुटि लौटाएगा। हमारी साइटें गलत थीं, इसलिए ELB स्वास्थ्य जांच विफल हो रही थी, जिसके कारण ELB को दो सर्वरों को रोटेशन से बाहर ले जाना पड़ा। शून्य स्वस्थ साइटों के साथ, ELB ने 503 सेवा उपलब्ध नहीं की: अनुपलब्ध बैक-एंड सर्वर क्षमता पर है।


5

[प्रश्न को बेहतर ढंग से समझने के बाद संपादित करें] ईएलबी का कोई अनुभव नहीं होने के बावजूद, मुझे अभी भी यह लगता है कि यह 503 त्रुटि की तरह संदेहास्पद है जो तब फेंकी जा सकती है जब अपाचे एक टॉमकैट का सामना करता है और कनेक्शन को बाढ़ देता है।

इसका प्रभाव यह है कि अगर अपाचे बैकएंड द्वारा संसाधित किए जा सकने की तुलना में अधिक कनेक्शन अनुरोधों को वितरित करता है, तो बैकएंड इनपुट कतारें तब तक भरती हैं जब तक कि अधिक कनेक्शन स्वीकार नहीं किए जा सकते। जब ऐसा होता है, तो Apache की संबंधित आउटपुट कतार भरने लगती है। जब कतारें भरी होती हैं, तो Apache 503 फेंकता है। ऐसा लगता है कि Apache बैकएंड होने पर भी ऐसा ही हो सकता है, और frontend इस तरह से रेट करता है जैसे कि कतारें भर जाती हैं।

(काल्पनिक) समाधान, बैकएंड के बैकएंड और आउटपुट कनेक्टर के इनपुट कनेक्टर को आकार देना है। यह प्रत्याशित बाढ़ के स्तर और इसमें शामिल कंप्यूटरों की उपलब्ध रैम के बीच संतुलन बनाने वाले कार्य में बदल जाता है।

तो जैसा कि ऐसा होता है, अपने अधिकतम ग्राहक सेटिंग की जाँच करें और अपाचे (mod_status।) में अपने व्यस्त श्रमिकों की निगरानी करें। यदि संभव हो तो जो भी ELB के साथ संभव हो वही करें जो Tomcats कनेक्टर बैकलॉग, मैक्सथ्रेड्स आदि से मेल खाता है। संक्षेप में, अपाचे की इनपुट कतारों और ELB की आउटपुट कतारों के बारे में सब कुछ देखें।

हालांकि मैं पूरी तरह से समझता हूं कि यह सीधे लागू नहीं है, इस लिंक में अपाचे कनेक्टर के लिए एक साइजिंग गाइड है। आपको संबंधित ईएलबी कतार तकनीकीताओं पर शोध करने की आवश्यकता होगी, फिर गणित करें: http://www.cubrid.org/blog/dev-platform/maxclients-in-apache-and-its-effect-on-tomcat-during- पूर्ण जीसी /

जैसा कि नीचे टिप्पणी में देखा गया है, अपाचे कनेक्टर को ट्रैफ़िक में स्पाइक से अभिभूत करने की एकमात्र संभावना नहीं है। यदि कुछ अनुरोध दूसरों की तुलना में धीमी गति से काम कर रहे हैं, तो उन का एक उच्च अनुपात भी भरने वाले संबंधक कतारों को जन्म दे सकता है। मेरे मामले में यह सच था।

इसके अलावा, जब मेरे साथ ऐसा हुआ था तो मुझे लगा कि 503: फिर से सेवा नहीं पाने के लिए मुझे अपाचे सेवा को फिर से शुरू करना होगा। बस कनेक्टर बाढ़ बाहर इंतजार पर्याप्त नहीं था। मुझे कभी नहीं पता चला कि कोई अपाचे में अपने कैश से सेवा कर सकता है?

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

आशा है कि यह कुछ मदद की थी।


मुझे बस एहसास हुआ कि आप लिख रहे हैं अपाचे आपका बैकएंड है। फिर भी, श्रमिक, अधिकतम ग्राहक आदि मैं अनुमान लगाकर खेलता हूं, हालांकि मेरा जवाब बहुत दूर है और एक पूर्ण पुनर्लेखन की आवश्यकता है। मैं इसके बजाय इसे हटा सकता हूं। सबक सीखा: प्रश्न को ठीक से पढ़ें।
एरिक

धन्यवाद। ऐसा होने के लिए ट्रैफ़िक में एक बड़ा स्पाइक होना चाहिए? और एक बार यातायात ने कहा कि अपाचे को पुनर्प्राप्त करने में सक्षम नहीं होना चाहिए?
JSP

सिद्धांत रूप में, हाँ। हालाँकि, जब मेरे साथ ऐसा हुआ है तो मुझे सेवा को फिर से शुरू करना पड़ा। इससे मुझे पहली बार उन जगहों की तलाश हुई, जिनका वास्तव में क्या हुआ, इससे कोई लेना-देना नहीं था, लेकिन उचित निदान और इलाज के बाद भी मैं सेवा पुनरारंभ की आवश्यकता को समझ नहीं पाया। मुझे चुपचाप यह संदेह था कि यह विंडोज पर अपाचे को चलाने के कारण था, क्योंकि मुझे एक असंबंधित बग संदर्भ मिला था जो जाहिर तौर पर केवल इस कॉम्बो के साथ सामने आया था। किसी भी मामले में बहुत अजीब है।
ErikE

और हाँ, वहाँ कनेक्टर्स भारी था - स्पाइक नहीं (हमारे लिए) लेकिन बहुत अधिक। यह कुछ विशेष अनुरोध थे जो सेवा करने के लिए धीमे थे, जो कि बस मौके पर बहुत सारे हुए। थोड़ी सी निगरानी करने और संबंधित मूल्यों को ऊपर उठाने के बाद 503 के बाद के पुनरारंभ के लिए आवश्यकता के साथ गायब हो गया है।
ErikE

4

आप एल्ब हेल्थ चेकर के मूल्यों को बढ़ा सकते हैं, इसलिए एक एकल धीमी प्रतिक्रिया के रूप में एल्ब से एक सर्वर नहीं खींच सकते। कुछ उपयोगकर्ताओं को सेवा उपलब्ध नहीं होने से बेहतर है कि साइट सभी के लिए नीचे हो।

संपादित करें: हम 25 मिनट के लिए स्वास्थ्य जांच समय समाप्त करके प्री-वार्मिंग कैश के बिना दूर होने में सक्षम हैं ...... 1-2 मिनट के बाद ... साइट नरक के रूप में उत्तरदायी है

EDIT :: बस मांग का एक गुच्छा लॉन्च करें, और जब आपके निगरानी उपकरण प्रबंधन को दिखाते हैं कि आपकी क्षमता कितनी तेज़ है, तो बस पूर्व भुगतान करें RI अमेज़न: P

संपादित करें: यह संभव है, एक एकल बैकेंड एल्ब पंजीकृत उदाहरण पर्याप्त नहीं है। बस कुछ और लॉन्च करें, और उन्हें एल्ब के साथ पंजीकृत करें, और इससे आपको अपनी समस्या को कम करने में मदद मिलेगी


0

कुछ साल देर हो चुकी है, लेकिन उम्मीद है कि इससे किसी को मदद मिलेगी।

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

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