हमारा सेटअप मानक nginx है (देखें 0.7)।59) + डेबियन लेन पर + अपस्ट्रीम सर्वर। अभी हम "वेब / ऐप और 1 डीबी बॉक्स के लिए 1 गोमांस बॉक्स पर फिर से चल रहे हैं। हाल ही में हमने थिन को नोट करना शुरू कर दिया है" आखिरकार "फांसी" शुरू हो जाएगी, यानी अब वे नगीनेक्स से अनुरोध प्राप्त नहीं करेंगे। हमारे पास 15 थिन चल रहे हैं, और 10 बजे तक। 15 मिनट, पहले 1 या 2 को लटका दिया जाएगा। यदि पूरे दिन छोड़ दिया जाए, तो उन थोड़े से थिन प्लस कुछ और भी लटकाए रहेंगे। अभी तक हमने जो देखा है वह केवल nginx को पुनः आरंभ कर रहा है। पुनः आरंभ करने के बाद, त्रिशंकु को तुरंत ही फिर से अनुरोध मिलना शुरू हो जाता है। इस वजह से, ऐसा लगता है कि उन थनों को ऊपर के पूल से बाहर ले जाया गया होगा।
अगर मैं डॉक्स को समझता हूं (http://wiki.nginx.org/NginxHttpUpstreamModule#server) सही ढंग से, चूक के साथ (जो हमारे पास है),अगर nginx 10 सेकंड के भीतर 3 बार बैकएंड सर्वर के साथ "t" संवाद कर सकता है, तो यह उस अपस्ट्रीम सर्वर को "निष्क्रिय" स्थिति में सेट कर देगा। यह 10 सेकंड प्रतीक्षा करेगा, फिर उस सर्वर को फिर से आज़माएं। यह समझ में आता है, लेकिन हम "पतली हैंग को अनिश्चित काल तक देखना। मैंने प्रत्येक थिन के लिए max_fails को 0 पर सेट करने का प्रयास किया, लेकिन वह "t मदद नहीं कर सका।" मैं यह पता लगा सकता हूं कि किस कारण से अपस्ट्रीम सर्वर स्थायी रूप से "निष्क्रिय" हो जाएगा।
हमने हाल ही में बड़ी वृद्धि दर देखी है, इसलिए हमें यकीन नहीं है कि यह उस से संबंधित हो सकता है, या कम समय में अधिक यातायात के परिणामस्वरूप अधिक स्पष्ट हो सकता है।
क्या नग्नेक्स में कुछ और (एक परिवर्तनशील निर्देश या अन्य स्थितियां) हैं जो इसे सर्वर को पूल से पूरी तरह से बाहर ले जाने का कारण होगा?
उत्तर:
जवाब के लिए 5 № 1हम nginx रिवर्स प्रॉक्सी समर्थन के साथ कई मुद्दों पड़ा है और अंततः डाल द्वारा एक बेहतर वास्तुकला हासिल की है HAProxy Mongrel और nginx के बीच। तो हमारी वास्तुकला है:
web => nginx => haproxy => Mongrels
जो हमने पहले (हाप्रोसी से पहले) देखा था, वह थाnginx बहुत सारे अनुरोधों के साथ Mongrels को बाढ़ देगा और Mongrel का अनुरोध कतार ठोस नहीं था और यह बहुत अधिक कतारबद्ध अनुरोधों के साथ जल्दी से अटक जाएगा। HAProxys कतार बहुत अधिक स्थिर है और यह nginx करता है। राउंड-रॉबिन संतुलन प्रदान करता है जब वास्तव में कम से कम कनेक्शन की तरह एक एल्गोरिथ्म बेहतर होता है। मुझे नहीं पता कि क्या पतली उसी मुद्दे (नों) से मोंगरेल के रूप में पीड़ित है।
हमारे नए सेटअप nginx में सिर्फ एक ही सम्मिलित हैhaproxy आवृत्ति और haproxy सभी पंजीकृत Mongrels कॉन्फ़िगर किया गया है। HAProxy के पास अपस्ट्रीम ओके / फेल डिटेक्शन के लिए बेहतर सपोर्ट है और प्रत्येक ऐप सर्वर को 1 कनेक्शन (मैक्सकोन डायरेक्टिव) तक सीमित कर सकता है जो कि Mongrel के लिए महत्वपूर्ण है, थिन के बारे में निश्चित नहीं है।
Maxconn निर्देश इतना महत्वपूर्ण है कि EngineYard के पास nginx के लिए एक पैच है जो इसे nginx का मूल बनाता है, इसलिए आपको इसका लाभ उठाने के लिए HAProxy को तैनात करने की आवश्यकता नहीं है।
देख: nginx-ey-संतुलन