2016-12-23 6 views
10

हमारे लोड बैलेंसर कुछ अनुरोधों के लिए 502 त्रुटियों को वापस कर रहा है। यह कुल अनुरोधों का एक बहुत ही कम प्रतिशत है, हमारे पास प्रति घंटे लगभग 36000 अनुरोध और प्रति घंटे लगभग 40 त्रुटियां हैं, इसलिए केवल 0,01% अनुरोधों में त्रुटि आती है। जब त्रुटि होती हैजीसीपी HTTP लोड संतुलन में कुछ 502 त्रुटियां

उदाहरणों स्वस्थ हैं और हम लोड संतुलन के लिए फ़ायरवॉल को यह अग्रेषण नियम जोड़ लिया है: 130.211.0.0/22 ​​टीसीपी: 1-5000 सभी लक्ष्यों

के लिए आवेदन करें ऐसा नहीं है एक बहुत ही गंभीर समस्या क्योंकि एप्लिकेशन ऐसी त्रुटियों को सहन करता है, लेकिन मैं जानना चाहता हूं कि उन्हें क्यों दिया जाता है।

किसी भी मदद की सराहना की जाएगी।

उत्तर

4

मुझे एक समस्या w/502s था जो लोड बैलेंसर और बैकएंड कॉन्फ़िगरेशन को पुनर्निर्मित करने के बाद अस्पष्ट था। मैंने अप्रबंधित उदाहरणों के लिए मेरे बैकएंड & इंस्टेंस समूह को फिर से बनाया और यह मेरे लिए समस्या को ठीक करना प्रतीत होता था। मैं जीसीपी में मेरी कॉन्फ़िगरेशन में किसी भी मुद्दे की पहचान करने में सक्षम नहीं था :(

लेकिन मुझे बहुत अधिक त्रुटियां थीं - 1/10। लोड बैलेंसर लॉग हैं जो आपको बताएंगे कि कारण क्या है और दस्तावेज़ कारणों की व्याख्या करते हैं ।

जैसे मेरे थे: jsonPayload: {statusDetails: "failed_to_pick_backend" @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBal ancerLogEntry"}

आप उपयोग कर रहे हैं nginx और यह POSTS पर है और त्रुटि को "backend_connection_closed_before_data_sent_to_client" के रूप में रिपोर्ट किया गया है, यह आपके nginx टाइमआउट को बदलकर तय किया जा सकता है। यह उत्कृष्ट ब्लॉग पोस्ट देखें:

https://blog.percy.io/tuning-nginx-behind-google-cloud-platform-http-s-load-balancer-305982ddb340#.btzyusgi6

+0

मैं अपाचे का उपयोग कर रहा हूं, लेकिन हाँ, त्रुटियां POST अनुरोधों पर हैं और त्रुटि "backend_connection_closed_before_data_sent_to_client" है। मैंने अपाचे के KeepAliveTimeout कॉन्फ़िगरेशन को 65 सेकंड में बदल दिया है और समस्या हल हो गई है। आपकी सहायता जेसनजी के लिए धन्यवाद! :) – Jordi

+0

कम त्रुटियां प्रतीत होती हैं लेकिन अभी भी हो रही हैं। मैं इसे कुछ घंटों में देख लूंगा। – Jordi

+0

मुझे लगता है कि आपको 600 से अधिक समय के लिए टाइमआउट की आवश्यकता है। – JasonG

7

ऐसा लगता है कि इसके लिए कोई आसान समाधान नहीं है।

यह पता चला है कि वहाँ Google मेघ HTTP (एस) लोड बैलेंसर और nginx के डिफ़ॉल्ट रखें जो रेस स्थिति यह है कि:

माइक Fotinakis this blog में बताते हैं (यह जानकारी JasonG :) के लिए धन्यवाद) 65 सेकंड के निष्क्रिय समय समाप्ति। एनजीआईएनएक्स टाइमआउट एक ही समय में पहुंचा जा सकता है जब लोड बैलेंसर दूसरे HTTP अनुरोध के लिए कनेक्शन का पुन: उपयोग करने का प्रयास करता है, जो कनेक्शन को तोड़ता है और लोड बैलेंसर से 502 खराब गेटवे प्रतिक्रिया में परिणाम देता है।

मेरे मामले में मैं mache_prefork मॉड्यूल के साथ अपाचे का उपयोग कर रहा हूं। समाधान प्रस्तावित है कि कनेक्शन को बनाए रखने वाले टाइमआउट को 650 तक बढ़ाएं, लेकिन यह संभव नहीं है क्योंकि प्रत्येक कनेक्शन एक नई प्रक्रिया खोलता है (इसलिए यह संसाधनों के एक बड़े अपशिष्ट का प्रतिनिधित्व करेगा)।

अद्यतन:
ऐसा लगता है सरकारी लोड संतुलन प्रलेखन पृष्ठ पर इस समस्या के बारे में कुछ नए प्रलेखन देखते हैं कि ("टाइमआउट और पुनः" के लिए खोज): https://cloud.google.com/compute/docs/load-balancing/http/

वे KeepAliveTimeout मान सेट करने की सलाह देते हैं दोनों मामलों में 620 तक (अपाचे और निगेंक्स)।

संबंधित मुद्दे