PgBouncer in Azure Database for PostgreSQL - Flexible Server

قاعدة بيانات Azure ل PostgreSQL - يقدم الخادم المرن PgBouncer كحل مدمج لتجميع الاتصال. هذه خدمة اختيارية يمكن تمكينها على أساس خادم لكل قاعدة بيانات ويتم دعمها بالوصول العام والخاص. يعمل PgBouncer في نفس الجهاز الظاهري مثل خادم قاعدة بيانات Postgres. يستخدم Postgres نموذجا قائما على العملية للاتصالات مما يجعل الحفاظ على العديد من الاتصالات الخاملة مكلفا. لذلك ، يواجه Postgres نفسه قيودا على الموارد بمجرد أن يقوم الخادم بتشغيل أكثر من بضعة آلاف من الاتصالات. تتمثل الفائدة الأساسية ل PgBouncer في تحسين الاتصالات الخاملة والاتصالات قصيرة العمر في خادم قاعدة البيانات.

يستخدم PgBouncer نموذجا أخف وزنا يستخدم إدخال/إخراج غير متزامن، ولا يستخدم اتصالات Postgres الفعلية إلا عند الحاجة، أي عندما يكون داخل معاملة مفتوحة، أو عندما يكون الاستعلام نشطا. يمكن لهذا الطراز دعم الآلاف من الاتصالات بسهولة أكبر مع انخفاض النفقات العامة ويسمح بالتوسع إلى ما يصل إلى 10000 اتصال مع انخفاض النفقات العامة.

عند تمكينه، يتم تشغيل PgBouncer على المنفذ 6432 على خادم قاعدة البيانات. يمكنك تغيير تكوين اتصال قاعدة بيانات التطبيق لاستخدام نفس اسم المضيف، ولكن قم بتغيير المنفذ إلى 6432 لبدء استخدام PgBouncer والاستفادة من تغيير حجم اتصال الخمول المحسن.

ملاحظة

يتم دعم PgBouncer على طبقات الحوسبة المحسنة للأغراض العامة والذاكرة في كل من الوصول العام وشبكات الوصول الخاص.

تمكين وتكوين PgBouncer

لتمكين PgBouncer، يمكنك الانتقال إلى شفرة "معلمات الخادم" في مدخل Azure، والبحث عن "PgBouncer" وتغيير الإعداد pgbouncer.enable إلى "true" لتمكين PgBouncer. ليست هناك حاجة لإعادة تشغيل الخادم. ومع ذلك، لتعيين معلمات PgBouncer أخرى، راجع قسم القيود.

يمكنك تكوين PgBouncer ، الإعدادات مع هذه المعلمات:

اسم المعلمة الوصف افتراضي
pgbouncer.default_pool_size تعيين قيمة المعلمة هذه إلى عدد الاتصالات لكل زوج مستخدم/قاعدة بيانات 50
pgBouncer.max_client_conn قم بتعيين قيمة المعلمة هذه إلى أكبر عدد من اتصالات العميل ب PgBouncer التي تريد دعمها . 5000
pgBouncer.pool_mode قم بتعيين قيمة المعلمة هذه إلى TRANSACTION لتجميع المعاملات (وهو الإعداد الموصى به لمعظم أحمال العمل). المعاملات
pgBouncer.min_pool_size أضف المزيد من اتصالات الخادم إلى التجمع إذا كان أقل من هذا الرقم. 0 (معطل)
pgbouncer.ignore_startup_parameters قائمة مفصولة بفواصل من المعلمات التي يمكن ل PgBouncer تجاهلها. على سبيل المثال ، يمكنك السماح ل PgBouncer بتجاهل extra_float_digits المعلمة.
pgbouncer.query_wait_timeout يسمح بقضاء الحد الأقصى للوقت (بالثواني) في انتظار التنفيذ. إذا لم يتم تعيين الاستعلام إلى خادم خلال ذلك الوقت، قطع اتصال العميل. عقد 120
pgBouncer.stats_users ‏‏اختياري. قم بتعيين قيمة المعلمة هذه إلى اسم مستخدم حالي، لتتمكن من تسجيل الدخول إلى قاعدة بيانات إحصائيات PgBouncer الخاصة (المسماة "PgBouncer").

لمزيد من التفاصيل حول تكوينات PgBouncer ، يرجى الاطلاع علىpgbouncer.ini.

ملاحظة

تتم إدارة ترقية PgBouncer بواسطة Azure.

تبديل التطبيق الخاص بك لاستخدام PgBouncer

لبدء استخدام PgBouncer، اتبع الخطوات التالية:

  1. الاتصال إلى خادم قاعدة البيانات الخاص بك، ولكن استخدم المنفذ 6432 بدلا من المنفذ العادي 5432 -- تحقق من أن هذا الاتصال يعمل
psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=postgres user=myUser password=myPassword sslmode=require"
  1. اختبر تطبيقك في بيئة ضمان الجودة ضد PgBouncer، للتأكد من عدم وجود أي مشاكل في التوافق. يوفر مشروع PgBouncer مصفوفة توافق، ونوصي باستخدام تجميع المعاملات لمعظم المستخدمين: https://www.PgBouncer.org/features.html#sql-feature-map-for-pooling-modes.
  2. قم بتغيير تطبيق الإنتاج للاتصال بالمنفذ 6432 بدلا من 5432، وراقب أي أخطاء في جانب التطبيق قد تشير إلى أي مشكلات في التوافق.

ملاحظة

حتى إذا قمت بتمكين PgBouncer، فلا يزال بإمكانك الاتصال بخادم قاعدة البيانات مباشرة عبر المنفذ 5432 باستخدام نفس اسم المضيف.

PgBouncer في توفر عالي زائد عن الحاجة

في الخوادم التي تم تكوينها ذات التوفر العالي الزائدة عن الحاجة في المنطقة، يقوم الخادم الأساسي بتشغيل PgBouncer. يمكنك الاتصال ب PgBouncer الخاص بالخادم الأساسي عبر المنفذ 6432. بعد تجاوز الفشل، يتم إعادة تشغيل PgBouncer في وضع الاستعداد الذي تمت ترقيته حديثا، وهو الخادم الأساسي الجديد. لذلك تظل سلسلة اتصال التطبيق الخاصة بك هي نفسها بعد تجاوز الفشل.

استخدام PgBouncer مع تجمعات الاتصال الأخرى

في بعض الحالات، قد يكون لديك بالفعل تجمع اتصال جانب التطبيق، أو لديك PgBouncer تم إعداده على جانب التطبيق الخاص بك مثل سيارة AKS الجانبية. في هذه الحالات ، لا يزال من المفيد استخدام PgBouncer المدمج ، لأنه يوفر فوائد توسيع نطاق الاتصال الخامل.

يمكن أن يكون استخدام تجمع جانبي للتطبيق مع PgBouncer على خادم قاعدة البيانات مفيدا. هنا ، يجلب تجمع جانب التطبيق ميزة تقليل زمن انتقال الاتصال الأولي (حيث أن الرحلة الأولية ذهابا وإيابا لتهيئة الاتصال أسرع بكثير) ، ويوفر PgBouncer من جانب قاعدة البيانات تحجيم الاتصال الخامل.

التقييدات

  • PgBouncer غير مدعوم حاليا مع طبقة حوسبة خادم Burstable.
  • إذا قمت بتغيير طبقة الحوسبة من الغرض العام أو الذاكرة المحسنة إلى طبقة Burstable ، فستفقد إمكانية PgBouncer.
  • كلما تمت إعادة تشغيل الخادم أثناء عمليات المقياس أو تجاوز فشل HA أو إعادة التشغيل ، تتم إعادة تشغيل PgBouncer أيضا مع الجهاز الظاهري للخادم. ومن ثم يجب إعادة إنشاء الروابط القائمة.
  • نظرا لوجود مشكلة معروفة، لا تعرض البوابة الإلكترونية كافة معلمات PgBouncer. بمجرد تمكين PgBouncer وحفظ المعلمة ، يجب عليك الخروج من شاشة المعلمة (على سبيل المثال ، انقر فوق نظرة عامة) ثم العودة إلى صفحة المعلمات.
  • مصادقة SCRAM غير مدعومة مع PgBouncer.

الخطوات التالية