किसी भी प्रणाली में प्रदर्शन हमेशा महत्वपूर्ण होता है। सर्वोत्तम प्रतिक्रिया समय सुनिश्चित करने के लिए आपको उपलब्ध संसाधनों का अच्छा उपयोग करने की आवश्यकता होगी और ऐसा करने के विभिन्न तरीके हैं। डेटाबेस से प्रत्येक कनेक्शन संसाधनों की खपत करता है, इसलिए इन तरीकों में से एक आपके एप्लिकेशन और डेटाबेस के बीच एक अच्छा कनेक्शन प्रबंधक होना है। इस ब्लॉग में, हम पोस्टग्रेएसक्यूएल के लिए एक कनेक्शन पूलर पीजी बाउंसर के बारे में बात करेंगे, और हम दिखाएंगे कि आपके पोस्टग्रेएसक्यूएल प्रदर्शन को बेहतर बनाने के लिए इसे कैसे कार्यान्वित किया जाए।
कनेक्शन पूलर
आपके सिस्टम के ट्रैफ़िक के आधार पर, आपके डेटाबेस पर लोड को कम करने के लिए एक बाहरी टूल जोड़ना उपयोगी हो सकता है जिससे प्रदर्शन में सुधार होगा। शायद यह पर्याप्त नहीं है, लेकिन यह एक अच्छी शुरुआत है। इसके लिए, कनेक्शन पूलर लागू करना एक अच्छा विचार है
कनेक्शन पूलिंग कनेक्शनों का एक पूल बनाने और उनका पुन:उपयोग करने की एक विधि है, जो हर समय डेटाबेस में नए कनेक्शन खोलने से बचता है, जो आपके अनुप्रयोगों के प्रदर्शन को काफी बढ़ा देगा। PgBouncer PostgreSQL के लिए डिज़ाइन किया गया एक लोकप्रिय कनेक्शन पूलर है।
पीजी बाउंसर कैसे काम करता है
PgBouncer PostgreSQL सर्वर के रूप में कार्य करता है, इसलिए आपको केवल PgBouncer जानकारी (IP पता/होस्टनाम और पोर्ट) का उपयोग करके अपने डेटाबेस तक पहुंचने की आवश्यकता है, और PgBouncer PostgreSQL सर्वर से एक कनेक्शन बनाएगा, या यह होगा यदि मौजूद है तो उसका पुन:उपयोग करें।
जब PgBouncer एक कनेक्शन प्राप्त करता है, तो यह प्रमाणीकरण करता है, जो कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट विधि पर निर्भर करता है। PgBouncer उन सभी प्रमाणीकरण तंत्रों का समर्थन करता है जो PostgreSQL सर्वर समर्थन करता है। इसके बाद, PgBouncer एक ही उपयोगकर्ता नाम + डेटाबेस संयोजन के साथ कैश्ड कनेक्शन की जांच करता है। यदि कोई कैश्ड कनेक्शन मिलता है, तो यह क्लाइंट को कनेक्शन लौटाता है, यदि नहीं, तो यह एक नया कनेक्शन बनाता है। PgBouncer कॉन्फ़िगरेशन और सक्रिय कनेक्शनों की संख्या के आधार पर, यह संभव हो सकता है कि नया कनेक्शन तब तक कतारबद्ध हो जब तक कि इसे बनाया नहीं जा सकता, या यहां तक कि निरस्त नहीं किया जा सकता।
PgBouncer व्यवहार कॉन्फ़िगर किए गए पूलिंग मोड पर निर्भर करता है:
-
सत्र पूलिंग (डिफ़ॉल्ट):जब कोई क्लाइंट कनेक्ट होता है, तो उसे पूरे के लिए एक सर्वर कनेक्शन असाइन किया जाएगा ग्राहक के जुड़े रहने की अवधि। जब क्लाइंट डिस्कनेक्ट हो जाता है, तो सर्वर कनेक्शन वापस पूल में डाल दिया जाएगा।
-
लेनदेन पूलिंग:एक सर्वर कनेक्शन क्लाइंट को केवल लेनदेन के दौरान सौंपा जाता है। जब PgBouncer नोटिस करता है कि लेन-देन समाप्त हो गया है, तो सर्वर कनेक्शन वापस पूल में डाल दिया जाएगा।
-
स्टेटमेंट पूलिंग:क्वेरी पूरी होने के तुरंत बाद सर्वर कनेक्शन वापस पूल में डाल दिया जाएगा। इस मोड में मल्टी-स्टेटमेंट लेनदेन की अनुमति नहीं है क्योंकि वे टूट जाएंगे।
ClusterControl का उपयोग करके PgBouncer को कैसे कार्यान्वित करें
इसके लिए, हम मान लेंगे कि आपके पास अपना PostgreSQL क्लस्टर है और चल रहा है और आप इसे प्रबंधित करने के लिए ClusterControl का उपयोग कर रहे हैं, अन्यथा, आप उच्च उपलब्धता के लिए PostgreSQL को आसानी से परिनियोजित करने के लिए इस ब्लॉग पोस्ट का अनुसरण कर सकते हैं।
ClusterControl पर जाएं -> PostgreSQL क्लस्टर चुनें -> क्लस्टर क्रियाएं -> लोड बैलेंसर जोड़ें -> PgBouncer। वहां आप एक नया PgBouncer नोड परिनियोजित कर सकते हैं जिसे चयनित डेटाबेस नोड में परिनियोजित किया जाएगा, या यहां तक कि मौजूदा PgBouncer नोड को आयात भी किया जा सकता है।
आपको IP पता या होस्टनाम, लिसन पोर्ट, और PgBouncer निर्दिष्ट करने की आवश्यकता होगी साख। जब आप Deploy PgBouncer दबाते हैं, तो ClusterControl बिना किसी मैन्युअल हस्तक्षेप के नोड तक पहुंच, इंस्टॉल और सब कुछ कॉन्फ़िगर करेगा।
आप ClusterControl गतिविधि अनुभाग में प्रगति की निगरानी कर सकते हैं। जब यह समाप्त हो जाए, तो आपको नया पूल बनाना होगा। इसके लिए, ClusterControl पर जाएँ -> PostgreSQL क्लस्टर चुनें -> Nodes -> PgBouncer Node।
यहां आपको निम्नलिखित जानकारी जोड़नी होगी:
-
PgBouncer hostname:कनेक्शन पूल बनाने के लिए नोड होस्ट का चयन करें।
-
पूल का नाम:पूल और डेटाबेस के नाम समान होने चाहिए।
-
उपयोगकर्ता नाम: PostgreSQL प्राथमिक नोड से एक उपयोगकर्ता चुनें या एक नया बनाएं।
-
पूल मोड:यह उन तरीकों में से एक हो सकता है जिनका हमने पहले उल्लेख किया था:सत्र (डिफ़ॉल्ट), लेनदेन, या स्टेटमेंट पूलिंग।
-
पूल आकार:इस डेटाबेस के लिए पूल का अधिकतम आकार। डिफ़ॉल्ट मान 20 है।
-
अधिकतम डेटाबेस कनेक्शन:एक डेटाबेस-व्यापी अधिकतम कॉन्फ़िगर करें। डिफ़ॉल्ट मान 0 है, जिसका अर्थ है असीमित।
अब, आप पूल को नोड सेक्शन में देख पाएंगे।
यह एक बुनियादी टोपोलॉजी है। आप इसे सुधार सकते हैं, उदाहरण के लिए, लोड बैलेंसर नोड्स जोड़ना, विफलता के एक बिंदु से बचने के लिए एक से अधिक, और उपलब्धता सुनिश्चित करने के लिए "रख-रखाव" जैसे कुछ टूल का उपयोग करना। यह ClusterControl का उपयोग करके भी किया जा सकता है।
निष्कर्ष
एक कनेक्शन पूलर के रूप में PgBouncer का उपयोग करना सर्वर में उपलब्ध संसाधनों का अच्छा उपयोग करते हुए डेटाबेस के प्रदर्शन को बेहतर बनाने का एक अच्छा तरीका है।
आप अपने PostgreSQL क्लस्टर के लिए उच्च उपलब्धता प्राप्त करने के लिए PgBouncer + HAProxy के संयोजन का उपयोग करके भी इस टोपोलॉजी में सुधार कर सकते हैं। ये सभी चीज़ें एक ही ClusterControl UI से की जा सकती हैं।