إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توفر قاعدة بيانات Azure لمثيلات الخادم المرنة PostgreSQL PgBouncer كحل مضمن لتجميع الاتصالات. PgBouncer هي ميزة اختيارية يمكنك تمكينها على أساس كل خادم قاعدة بيانات. وهو مدعوم على مستويات الحوسبة للأغراض العامة والذاكرة المحسنة في كل من الوصول العام وشبكات الوصول الخاصة.
يعمل PgBouncer على نفس الجهاز الظاهري (VM) مثل خادم قاعدة البيانات لقاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL. يستخدم Postgres نموذجا يستند إلى العملية للاتصالات، لذا فإن الحفاظ على العديد من الاتصالات الخاملة مكلف. يتم تشغيل Postgres في قيود الموارد عندما يقوم الخادم بتشغيل أكثر من بضعة آلاف من الاتصالات. الفائدة الأساسية من PgBouncer هي تحسين الاتصالات الخاملة والاتصالات قصيرة الأجل في خادم قاعدة البيانات.
يستخدم PgBouncer نموذجا خفيف الوزن يستخدم الإدخال/الإخراج غير المتزامن. ويستخدم اتصالات Postgres فقط عند الحاجة - أي عندما يكون داخل معاملة مفتوحة أو عندما يكون الاستعلام نشطا. يسمح هذا النموذج بتحجيم ما يصل إلى 10000 اتصال مع حمل منخفض.
يتم تشغيل PgBouncer على المنفذ 6432 على خادم قاعدة البيانات. يمكنك تغيير تكوين اتصال قاعدة بيانات التطبيق الخاص بك لاستخدام نفس اسم المضيف، ولكن تغيير المنفذ إلى 6432 لبدء استخدام PgBouncer والاستفادة من تحسين تحجيم الاتصالات الخاملة.
يدعم PgBouncer في قاعدة بيانات Azure ل PostgreSQL مصادقة Microsoft Entra (Azure AD).
PgBouncer مع عناقيد مرنة
يتوفر PgBouncer أيضا للمجموعات المرنة. كل عقدة في مجموعة مرنة لها مثيلها الخاص من PgBouncer. بعد تفعيلها، سيتم توجيه المنفذ 6432 إلى PgBouncer على عقدة منسق العنقود المرنة. بالإضافة إلى ذلك، سيتم توجيه المنفذ 8432 إلى مثيلات PgBouncer التي تعمل على عقد العمال في العنقود.
حاليا، النسخة المنشورة من PgBouncer على جميع النسخ الرئيسية المدعومة من المحرك (18، 17، 16، 15، 14، 13، 12، 11) في قاعدة بيانات Azure ل PostgreSQL، هي 1.23.1.
تمكين وتكوين PgBouncer
PgBouncer مفيد بشكل خاص في تطبيقات المعاملات حيث يمكن أن يؤدي انقطاع الاتصال المتكرر إلى تدهور الأداء. يتم تمكينه افتراضيا على المنفذ 6432، ويمكنك الاتصال به باستخدام نفس اسم المضيف مثل خادم PostgreSQL، ولكن مع المنفذ 6432 بدلا من المنفذ الافتراضي 5432.
لتمكين PgBouncer، انتقل إلى جزء Server parameters في مدخل Microsoft Azure، وابحث عن PgBouncer، وغير pgbouncer.enabled الإعداد إلى true. ليست هناك حاجة لإعادة تشغيل الخادم.
يمكنك تكوين إعدادات PgBouncer باستخدام هذه المعلمات.
إشعار
تظهر القائمة التالية لمعلمات خادم PgBouncer في جزء معلمات الخادم فقط إذا تم تعيين معلمة pgbouncer.enabled الخادم إلى true. وإلا، يتم إخفاؤها عمدا.
| اسم المعلمة | الوصف | الإعداد الافتراضي |
|---|---|---|
| pgbouncer.default_pool_size | تعيين قيمة المعلمة هذه إلى عدد الاتصالات لكل زوج مستخدم/قاعدة بيانات. | 50 |
| pgbouncer.ignore_startup_parameters | أدخل قائمة مفصولة بفواصل من المعلمات التي يمكن ل PgBouncer تجاهلها. على سبيل المثال، يمكنك السماح ل PgBouncer بتجاهل المعلمة extra_float_digits . يسمح ببعض المعلمات؛ جميع الآخرين يثيرون خطأ. هذه القدرة مطلوبة للتسامح مع اتصال قاعدة بيانات Java overenthusiastic (JDBC) التي تريد تعيينها extra_float_digits=2 دون شروط في حزم بدء التشغيل. استخدم هذا الخيار إذا كانت المكتبة التي تستخدمها تقوم بتقارير عن أخطاء مثل pq: unsupported startup parameter: extra_float_digits. |
|
| pgbouncer.max_client_conn | قم بتعيين قيمة المعلمة هذه إلى الحد الأقصى لعدد اتصالات العميل إلى PgBouncer الذي تريد دعمه. الافتراضي هو 5000، مع نطاق مسموح به من 1 إلى 50000 | 5000 |
| pgbouncer.max_prepared_statements | عند تعيين هذا إلى قيمة غير صفرية يتعقب PgBouncer على مستوى البروتوكول المسمى الأوامر ذات الصلة بالعبارات المعدة المرسلة من قبل العميل في وضع تجميع العمليات والعبارات. | 1 |
| pgbouncer.min_pool_size | أضف المزيد من اتصالات الخادم إلى التجمع إذا كان أقل من هذا الرقم. | 1 |
| pgbouncer.pool_mode | قم بتعيين قيمة المعلمة هذه إلى TRANSACTION لتجميع المعاملات (وهو الإعداد الموصى به لمعظم أحمال العمل). | المعاملات |
| pgbouncer.query_wait_timeout | يسمح لأقصى وقت (بالثواني) بقضاء الاستعلامات في انتظار التنفيذ. إذا لم يتم تعيين الاستعلام إلى خادم خلال ذلك الوقت، فإنه يتم قطع اتصال العميل. | 120 |
| pgbouncer.server_idle_timeout | إذا كان اتصال الخادم معلقا أكثر من هذا العدد من الثوان، إسقاطه. إذا كانت 0، تعطيل المهلة. | 600 |
| pgbouncer.stats_users | قائمة مفصولة بفاصلة لمستخدمي قاعدة البيانات المسموح لهم بالاتصال وتشغيل استعلامات القراءة فقط على وحدة تحكم pgBouncer. |
لمزيد من المعلومات حول تكوينات PgBouncer، راجع وثائق pgbouncer.ini.
المزايا
باستخدام ميزة PgBouncer المضمنة مع قاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL، يمكنك الحصول على هذه الفوائد:
راحة التكوين المبسط: نظرا لأن PgBouncer متكامل مع قاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL، فلا داعي لتثبيت منفصل أو إعداد معقد. يمكنك تكوينه مباشرة من معلمات الخادم.
موثوقية الخدمة المدارة: يوفر PgBouncer مزايا الخدمات المدارة من Azure. على سبيل المثال، يدير Azure تحديثات PgBouncer. تلغي التحديثات التلقائية الحاجة إلى الصيانة اليدوية وتضمن بقاء PgBouncer على اطلاع بأحدث الميزات وتصحيحات الأمان.
دعم أنواع الاتصال المختلفة: يوفر PgBouncer في قاعدة بيانات Azure ل PostgreSQL دعما لكل من الاتصالات العامة والخاصة. يمكنك استخدامه لإنشاء اتصالات آمنة عبر الشبكات الخاصة أو الاتصال خارجيا، اعتمادا على متطلباتك المحددة.
قابلية وصول عالية في سيناريوهات تجاوز الفشل: إذا تمت ترقية خادم الاستعداد إلى الدور الأساسي أثناء تجاوز الفشل، يتم إعادة تشغيل PgBouncer بسلاسة في وضع الاستعداد الذي تمت ترقيته حديثا. لا تحتاج إلى إجراء أي تغييرات على سلسلة الاتصال التطبيق. تساعد هذه القدرة على ضمان التوفر المستمر وتقليل تعطيل تجمع اتصال التطبيق.
مراقبة PgBouncer
المقاييس
يمكنك استخدام مقاييس PgBouncer لمراقبة أداء عملية PgBouncer، بما في ذلك تفاصيل الاتصالات النشطة والاتصالات الخاملة وإجمالي الاتصالات المجمعة وعدد تجمعات الاتصال. يتم إصدار كل مقياس في فاصل زمني مدته دقيقة واحدة ويحتوي على ما يصل إلى 93 يوما من التاريخ. يمكن للعملاء تكوين التنبيهات على المقاييس والوصول أيضا إلى أبعاد المقاييس الجديدة لتقسيم بيانات المقاييس وتصفيتها حسب اسم قاعدة البيانات.
كيفية تمكين مقاييس PgBouncer
- لمراقبة مقاييس PgBouncer، تأكد من تمكين ميزة pgbouncer عبر معلمة
pgbouncer.enabledالخادم وتمكين معلمةmetrics.pgbouncer_diagnosticsالمقاييس. - هذه المعلمات ديناميكية ولا تتطلب إعادة تشغيل مثيل.
- يتم تعطيل مقاييس PgBouncer بشكل افتراضي.
قائمة مقاييس PgBouncer
| اسم العرض | معرف القياس | الوحدة | الوصف | البُعد | تمكين افتراضي |
|---|---|---|---|---|---|
| اتصالات العميل النشطة | client_connections_active |
عدد | الاتصالات من العملاء المقترنة بقاعدة بيانات Azure لاتصال خادم PostgreSQL المرن. | اسم قاعدة البيانات | لا |
| انتظار اتصالات العميل | client_connections_waiting |
عدد | الاتصالات من العملاء الذين ينتظرون اتصال خادم مرن لقاعدة بيانات Azure ل PostgreSQL لخدمتهم. | اسم قاعدة البيانات | لا |
| اتصالات الخادم النشطة | server_connections_active |
عدد | الاتصالات بقاعدة بيانات Azure لخادم PostgreSQL المرن الذي يستخدمه اتصال العميل. | اسم قاعدة البيانات | لا |
| اتصالات الخادم الخاملة | server_connections_idle |
عدد | الاتصالات بقاعدة بيانات Azure لخادم PostgreSQL المرن الخامل والجاهز لخدمة اتصال عميل جديد. | اسم قاعدة البيانات | لا |
| إجمالي الاتصالات المجمعة | total_pooled_connections |
عدد | العدد الحالي للاتصالات المجمعة. | اسم قاعدة البيانات | لا |
| عدد تجمعات الاتصال | num_pools |
عدد | إجمالي عدد تجمعات الاتصال. | اسم قاعدة البيانات | لا |
اعتبارات استخدام مقاييس PgBouncer
- مقاييس PgBouncer التي تستخدم بعد DatabaseName لها حد 30 قاعدة بيانات .
- في وحدة SKU القابلة للاندفاع ، الحد هو 10 قواعد بيانات لها بعد DatabaseName.
- يتم تطبيق حد البعد DatabaseName على عمود OID، والذي يعكس ترتيب إنشاء قاعدة البيانات.
لمعرفة المزيد، راجع مقاييس PgBouncer.
وحدة تحكم المسؤول
يوفر PgBouncer أيضا قاعدة بيانات داخلية تسمى pgbouncer. عند الاتصال بقاعدة البيانات هذه، يمكنك تشغيل SHOW الأوامر التي توفر معلومات حول الحالة الحالية ل PgBouncer.
للاتصال بقاعدة pgbouncer البيانات:
تعيين المعلمة
pgBouncer.stats_usersإلى اسم مستخدم موجود (على سبيل المثال،myUser)، وتطبيق التغييرات.اتصل بقاعدة
pgbouncerالبيانات مثل هذا المستخدم وضبط المنفذ على6432:psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=pgbouncer user=myUser password=<password> sslmode=require"
بعد الاتصال بقاعدة البيانات، استخدم SHOW الأوامر لعرض إحصائيات PgBouncer:
-
SHOW HELP: سرد جميع الأوامر المتوفرةSHOW. -
SHOW POOLS: إظهار عدد الاتصالات في كل حالة لكل تجمع. -
SHOW DATABASES: إظهار حدود الاتصال المطبقة الحالية لكل قاعدة بيانات. -
SHOW STATS: إظهار الإحصائيات حول الطلبات وحركة المرور لكل قاعدة بيانات.
لمزيد من المعلومات حول أوامر PgBouncer SHOW ، راجع وحدة تحكم المسؤول.
تبديل التطبيق الخاص بك لاستخدام PgBouncer
لبدء استخدام PgBouncer، اتبع الخطوات التالية:
اتصل بخادم قاعدة البيانات، ولكن استخدم المنفذ 6432 بدلا من المنفذ العادي 5432. تحقق من أن هذا الاتصال يعمل.
psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=postgres user=myUser password=<password> sslmode=require"اختبر تطبيقك في بيئة QA مقابل PgBouncer، للتأكد من عدم وجود أي مشاكل في التوافق. يوفر مشروع PgBouncer مصفوفة توافق، ونوصي بتجميع المعاملات لمعظم المستخدمين.
قم بتغيير تطبيق الإنتاج للاتصال بالمنفذ 6432 بدلا من 5432. راقب أي أخطاء من جانب التطبيق قد تشير إلى مشكلات التوافق.
PgBouncer في قابلية وصول عالية زائدة عن الحاجة للمنطقة
في خوادم المنطقة المكررة والتوافر العالي (HA)، يقوم الخادم الأساسي بتشغيل PgBouncer. يمكنك الاتصال ب PgBouncer على الخادم الأساسي عبر المنفذ 6432. بعد تجاوز الفشل، تتم إعادة تشغيل PgBouncer في وضع الاستعداد الذي تمت ترقيته حديثا، والذي أصبح الآن الخادم الأساسي. لذلك يظل تطبيقك سلسلة الاتصال كما هو بعد تجاوز الفشل.
استخدام PgBouncer مع تجمعات الاتصال الأخرى
في بعض الحالات، قد يكون لديك بالفعل تجمع اتصال من جانب التطبيق أو تم إعداد PgBouncer على جانب التطبيق الخاص بك (على سبيل المثال، Azure Kubernetes Service sidecar). في هذه الحالات، يمكن أن تظل ميزة PgBouncer المضمنة مفيدة لأنها توفر فوائد تحجيم الاتصال الخامل.
يمكن أن يكون استخدام تجمع من جانب التطبيق مع PgBouncer على خادم قاعدة البيانات مفيدا. هنا، يجلب التجمع من جانب التطبيق فائدة انخفاض زمن انتقال الاتصال الأولي (لأن الجولة لتهيئة الاتصال أسرع بكثير)، ويوفر PgBouncer من جانب قاعدة البيانات تحجيم الاتصال الخامل.
القيود
- ميزة PgBouncer غير مدعومة حاليا مع طبقة حساب الخادم القابل للاندفاع. إذا قمت بتغيير طبقة الحوسبة من General Purpose أو Memory Optimized إلى Burstable، فستفقد قدرة PgBouncer المضمنة.
- كلما تمت إعادة تشغيل الخادم أثناء عمليات المقياس أو تجاوز فشل قابلية الوصول العالية أو إعادة التشغيل، تتم أيضا إعادة تشغيل PgBouncer والجهاز الظاهري. ثم عليك إعادة إنشاء الاتصالات الموجودة.
- لا يعرض المدخل جميع معلمات PgBouncer. بعد تمكين PgBouncer وحفظ المعلمات، يجب إغلاق جزء Server parameters (على سبيل المثال، حدد Overview) ثم العودة إلى جزء Server parameters .
- لا يمكنك استخدام أوضاع تجمع العبارات مع العبارات المعدة. أضاف الإصدار الحالي من PgBouncer دعما للبيانات المعدة داخل وضع المعاملة. يمكن تمكين هذا الدعم وتكوينه عبر معلمة max_prepared_statements. سيؤدي تعيين هذه المعلمة فوق القيمة الافتراضية 0 إلى تشغيل دعم العبارات المعدة. ينطبق هذا الدعم فقط على العبارات المعدة على مستوى البروتوكول. بالنسبة لمعظم لغات البرمجة، هذا يعني أننا نستخدم وظيفة libpq PQprepare على العميل، وإرسال أوامر مستوى البروتوكول التي يمكن ل PgBouncer اعتراضها، بدلا من إصدار أمر SQL ديناميكي مشابه لإعداد proc AS، والذي يرسل نصا لن يفسره PgBouncer بشكل صحيح. للتحقق من القيود الأخرى لوضع التجمع الذي اخترته، راجع وثائق PgBouncer.
- إذا تم نشر PgBouncer كميزة، يصبح نقطة فشل واحدة محتملة. إذا كانت ميزة PgBouncer معطلة، فقد تؤدي إلى تعطيل تجمع اتصال قاعدة البيانات بالكامل والتسبب في توقف التطبيق. للتخفيف من نقطة الفشل الفردية، يمكنك إعداد مثيلات PgBouncer متعددة خلف موازن تحميل للتوافر العالي على أجهزة Azure الظاهرية.
- تقييد حجم الرمز المميز باستخدام مصادقة Azure AD - لن يتمكن المستخدمون الذين لديهم عدد كبير من عضويات المجموعة من الاتصال من خلال PgBouncer بسبب تقييد حجم الرمز المميز. تعمل التطبيقات والخدمات والمستخدمين الذين لديهم عدد صغير من المجموعات.
- PgBouncer هو تطبيق خفيف الوزن يستخدم بنية ذات مؤشر ترابط واحد. هذا التصميم رائع لمعظم أحمال عمل التطبيق. ولكن في التطبيقات التي تنشئ عددا كبيرا من الاتصالات قصيرة الأجل، قد يؤثر هذا التصميم على أداء pgBouncer ويحد من قدرتك على توسيع نطاق تطبيقك. قد تحتاج إلى تجربة أحد هذه الأساليب:
- توزيع تحميل الاتصال عبر مثيلات PgBouncer متعددة على أجهزة Azure الظاهرية.
- ضع في اعتبارك الحلول البديلة، بما في ذلك الحلول متعددة القراءة مثل PgCat، على أجهزة Azure الظاهرية.
هام
تم إهمال معلمة pgbouncer.client_tls_sslmode ميزة PgBouncer المضمنة في قاعدة بيانات Azure ل PostgreSQL.
عند فرض TLS/SSL للاتصالات بقاعدة بيانات Azure لمثيل الخادم المرن PostgreSQL عبر تعيين معلمة require_secure_transport الخادم إلى ON، يتم فرض TLS/SSL تلقائيا للاتصالات بميزة PgBouncer المضمنة. يكون هذا الإعداد قيد التشغيل بشكل افتراضي عند إنشاء مثيل خادم مرن جديد لقاعدة بيانات Azure ل PostgreSQL وتمكين ميزة PgBouncer المضمنة. لمزيد من المعلومات، راجع الاتصال الآمن ب TLS في قاعدة بيانات Azure ل PostgreSQL.
بالنسبة للعملاء الذين يرغبون في إدارة مبسطة، وقابلية وصول عالية مدمجة، والاتصال السهل بالتطبيقات المعبأة في حاويات، والقدرة على استخدام معلمات التكوين الأكثر شيوعا، تعد ميزة PgBouncer المضمنة خيارا جيدا. بالنسبة للعملاء الذين يرغبون في قابلية التوسع متعددة مؤشرات الترابط والتحكم الكامل في جميع المعلمات وتجربة تصحيح الأخطاء، قد يكون إعداد PgBouncer على أجهزة Azure الظاهرية بديلا.