Nginx के बिना ELB के पीछे Gunicorn के लिए रखने वाली सेटिंग


15

हमारे ऐप के REST API को AWS EC2 इंस्टेंसेस पर चलने वाले Gunicorn ( Nginx के पीछे नहीं ) द्वारा एक विशिष्ट ऑटो-स्केलिंग / लोड बैलेंसिंग सेटअप के साथ प्रस्तुत किया गया है। लोड बैलेंसर का निष्क्रिय समयबाह्य 60 सेकंड है, और गुनिकॉर्न का जीवित-जीवित समय 2 सेकंड है। हम 504 Gateway Timeoutइस विन्यास से छिटपुट प्रतिक्रियाएँ देख रहे हैं । अमेज़ॅन डॉक्स के अनुसार , ऐसा इसलिए हो सकता है क्योंकि सर्वर का लाइव-टाइमआउट लोड बैलेंसर के निष्क्रिय टाइमआउट सेट से कम है:

कारण 2: पंजीकृत उदाहरणों का संबंध इलास्टिक लोड बैलेंसिंग से होता है।

समाधान 2: अपने EC2 इंस्टेंसेस पर की-सजीव सेटिंग सक्षम करें और अपने लोड बॉलर के निष्क्रिय टाइमआउट सेटिंग्स से अधिक या उसके बराबर कीपिंग-सजीव समय-सीमा निर्धारित करें।

Nginx के साथ, डिफ़ॉल्ट keepalive_timeout75 सेकंड है, जो स्पष्ट रूप से ELB डिफ़ॉल्ट सेटिंग्स के साथ अच्छी तरह से काम करता है। हालांकि, Gunicorn डॉक्सkeepalive 1-5 सेकंड की सीमा में एक सेटिंग की सलाह देते हैं ।

क्या यह 75 सेकंड के लिए Gunicorn की रखवाली को टक्कर देने के लिए समझ में आता है, या 5 सेकंड से नीचे रखने के लिए एक अच्छा कारण है, भले ही हम इसके सामने रिवर्स प्रॉक्सी का उपयोग नहीं कर रहे हैं?

जवाबों:


16

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

504 Gateway Timeout इस स्थिति के लिए एक अजीब त्रुटि है, लेकिन ऐसा प्रतीत होता है कि जब कनेक्शन का पुन: उपयोग बैक-एंड के समय से पहले बंद होने के साथ होता है तो ईएलबी वापस आ जाता है।

यदि ब्राउज़र सीधे बैक-एंड के साथ संचार कर रहा था, तो 5 सेकंड की सिफारिश समझ में आ सकती है, लेकिन यह ईएलबी के साथ ऐसा नहीं है, जो कि HTTP मोड में चलने पर एक उचित रिवर्स-प्रॉक्सी है।


धन्यवाद, यह वही है जो मुझे संदेह था। मैं इस सप्ताह इसे बदलने की कोशिश करूंगा और अपना जवाब सही
करूंगा

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