मेरे पास एक django सेटअप है जो Django 1.6.7 और Postgres 9.3 को Ubuntu 14.04 LTS पर उपयोग कर रहा है।
किसी भी समय, साइट को PostgreSQL डेटाबेस के बारे में ~ 250 एक साथ कनेक्शन मिलता है, जो कि 2.5GHz पर एक Quad Core Xeon E5-2670 है, और इसमें 16GB RAM है। दिन भर में उस विशेष मशीन पर लोड औसत लगभग 20 से 30 है।
कभी-कभी मुझे डेटाबेस से कनेक्शन टाइमिंग के बारे में संतरी में ईमेल मिलेंगे, और मुझे लगता है कि कुछ प्रकार के कनेक्शन पूलिंग को सक्षम करने से इस समस्या को कम करने में मदद मिलेगी, साथ ही डेटाबेस पर लोड थोड़ा कम होगा।
जब से हम Django 1.6 का उपयोग कर रहे हैं, हमारे पास हमारे लिए उपलब्ध पूलिंग है। हालाँकि, जब मैं CONN_MAX_AGE को 10 सेकंड, या 60 सेकंड पर सेट करता हूं, तो लगभग तुरंत ही एक साथ कनेक्शन की संख्या अधिकतम अनुमत सेटिंग (जो कि आमतौर पर हम देखते हैं के बारे में दोगुनी है) के लिए कूद जाती है, और कनेक्शन अस्वीकार होने लगते हैं।
इसलिए, यह जो भी हो, कनेक्शन के लिए प्रकट होता है कर रहे हैं बने हैं, लेकिन वे नहीं कर रहे हैं पुन: उपयोग किया जा रहा है।
इसका कारण क्या हो सकता है?
पुनश्च। हम भी साथ काम कर रहे हैं gunicorn --worker-class = eventlet। शायद यह हमारे संकट का स्रोत है?