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