PgBouncer az Azure Database for PostgreSQL-ben – rugalmas kiszolgáló

A következőkre vonatkozik: Azure Database for PostgreSQL – Rugalmas kiszolgáló

A rugalmas Azure Database for PostgreSQL-kiszolgáló beépített kapcsolatkészletezési megoldásként kínálja a PgBouncert . A PgBouncer egy opcionális funkció, amelyet adatbázis-kiszolgálónként engedélyezhet. Ez az általános célú és memóriaoptimalizált számítási szinteken is támogatott mind a nyilvános hozzáférésű, mind a privát hozzáférési hálózatokban.

A PgBouncer ugyanazon a virtuális gépen fut, mint a rugalmas Azure Database for PostgreSQL-kiszolgáló adatbázis-kiszolgálója. A Postgres folyamatalapú modellt használ a kapcsolatokhoz, ezért sok tétlen kapcsolat fenntartása költséges. A Postgres erőforrás-korlátozásokba ütközik, ha a kiszolgáló több mint néhány ezer kapcsolatot futtat. A PgBouncer elsődleges előnye az inaktív kapcsolatok és a rövid élettartamú kapcsolatok javítása az adatbázis-kiszolgálón.

A PgBouncer egy egyszerűsített modellt használ, amely aszinkron I/O-t használ. A Postgres-kapcsolatokat csak akkor használja, ha szükség van rá, vagyis amikor egy nyitott tranzakción belül vagy egy lekérdezés aktív. Ez a modell legfeljebb 10 000 kapcsolat skálázását teszi lehetővé alacsony többletterheléssel.

A PgBouncer a 6432-es porton fut az adatbázis-kiszolgálón. Az alkalmazás adatbázis-kapcsolati konfigurációját módosíthatja úgy, hogy ugyanazt a gazdagépnevet használja, de a portot 6432-re módosíthatja a PgBouncer használatának megkezdéséhez, és kihasználhatja az üresjárati kapcsolatok jobb skálázását.

A rugalmas Azure Database for PostgreSQL-kiszolgálón található PgBouncer támogatja a Microsoft Entra-hitelesítést.

A PgBouncer engedélyezése és konfigurálása

A PgBouncer engedélyezéséhez lépjen az Azure Portal Kiszolgálóparaméterek paneljére, keresse meg a PgBouncert, és módosítsa a beállítást a pgbouncer.enabled következőre true: . Nincs szükség a kiszolgáló újraindítására.

A PgBouncer beállításait ezen paraméterek használatával konfigurálhatja.

Feljegyzés

A PgBouncer-kiszolgáló paramétereinek alábbi listája csak akkor látható a Kiszolgálóparaméterek panelen, ha a pgbouncer.enabled kiszolgálóparaméter értéke true. Ellenkező esetben szándékosan el vannak rejtve.

Paraméter neve Leírás Alapértelmezett
pgbouncer.default_pool_size Állítsa be ezt a paraméterértéket a kapcsolatok felhasználónkénti/adatbázispáronkénti számára. 50
pgbouncer.ignore_startup_parameters Adja meg a PgBouncer által figyelmen kívül hagyható paraméterek vesszővel tagolt listáját. Engedélyezheti például, hogy a PgBouncer figyelmen kívül hagyja a paramétert extra_float_digits . Egyes paraméterek engedélyezettek; minden más hibát jelez. Erre a képességre azért van szükség, hogy elviseljük a java-adatbázis Csatlakozás tivitását (JDBC), amely feltétel nélkül be szeretné állítani extra_float_digits=2 az indítási csomagokat. Ezt a lehetőséget akkor használja, ha a jelentésekkel kapcsolatos hibákat (például pq: unsupported startup parameter: extra_float_digits: ) használó tárat használja.
pgbouncer.max_client_conn Állítsa ezt a paraméterértéket a támogatni kívánt PgBouncer-ügyfélkapcsolatok legmagasabb számára. 5000
pgbouncer.max_prepared_statements Ha ez egy nem nulla értékű PgBouncer értékre van állítva, nyomon követi az ügyfél által tranzakció- és utasításkészletezési módban küldött, protokollszintű, előkészített utasításokhoz kapcsolódó parancsokat. 0
pgbouncer.min_pool_size Adjon hozzá további kiszolgálókapcsolatokat a készlethez, ha ez alatt a szám alatt van. 0
pgbouncer.pool_mode Állítsa ezt a paraméterértéket TRANZAKCIÓ értékre a tranzakciókészletezéshez (ez a legtöbb számítási feladathoz ajánlott beállítás). Tranzakció
pgbouncer.query_wait_timeout A lekérdezések maximális időtartama (másodpercben) a végrehajtásra való várakozással tölthető. Ha ez idő alatt a lekérdezés nincs kiszolgálóhoz rendelve, az ügyfél kapcsolata megszakad. 120
pgbouncer.server_idle_timeout Ha egy kiszolgálókapcsolat ennyi másodpercnél hosszabb ideig tétlen volt, az megszakad. Ha 0, akkor az időtúllépés le van tiltva. 600
pgbouncer.stats_users Vesszővel tagolt lista azon adatbázis-felhasználókról, amelyek a pgBouncer konzolon csatlakozhatnak és futtathatnak írásvédett lekérdezéseket.

A PgBouncer konfigurációiról további információt a pgbouncer.ini dokumentációjában talál.

Az alábbi táblázat a PgBouncer jelenleg üzembe helyezett verzióit mutatja be a PostgreSQL minden főverziójával együtt:

PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
1.22.1 1.22.1 1.22.1 1.22.1 1.22.1 1.22.1

Juttatások

A rugalmas Azure Database for PostgreSQL-kiszolgáló beépített PgBouncer funkciójával az alábbi előnyöket élvezheti:

  • Az egyszerűsített konfiguráció kényelmessége: Mivel a PgBouncer integrálva van a rugalmas Azure Database for PostgreSQL-kiszolgálóval, nincs szükség külön telepítésre vagy összetett telepítésre. Ezt közvetlenül a kiszolgálóparaméterekből konfigurálhatja.

  • Felügyelt szolgáltatás megbízhatósága: A PgBouncer az Azure által felügyelt szolgáltatások előnyeit kínálja. Az Azure például a PgBouncer frissítéseit kezeli. Az automatikus frissítések nem igényelnek manuális karbantartást, és biztosítják, hogy a PgBouncer naprakész maradjon a legújabb funkciókkal és biztonsági javításokkal.

  • Különböző kapcsolattípusok támogatása: A rugalmas Azure Database for PostgreSQL-kiszolgálón található PgBouncer mind a nyilvános, mind a privát kapcsolatokhoz nyújt támogatást. Segítségével biztonságos kapcsolatokat létesíthet magánhálózatokon keresztül, vagy külső kapcsolat létesítésére, az adott követelményektől függően.

  • Magas rendelkezésre állás feladatátvételi forgatókönyvekben: Ha a feladatátvétel során előléptet egy készenléti kiszolgálót az elsődleges szerepkörbe, a PgBouncer zökkenőmentesen újraindul az újonnan előléptetett készenléti gépen. Nem kell módosítania az alkalmazás kapcsolati sztring. Ez a képesség segít biztosítani a folyamatos rendelkezésre állást, és minimálisra csökkenti az alkalmazás kapcsolatkészletének megszakadását.

PgBouncer monitorozása

Mérőszámok

A rugalmas Azure Database for PostgreSQL-kiszolgáló hat metrikát biztosít a PgBouncer-kapcsolatkészletezés figyeléséhez:

Megjelenített név Metrikaazonosító Unit (Egység) leírás Dimenzió Alapértelmezett engedélyezve
Aktív ügyfélkapcsolatok (előzetes verzió) client_connections_active Count rugalmas Azure Database for PostgreSQL-kiszolgálókapcsolathoz társított ügyfelek Csatlakozás DatabaseName Nem
Várakozási ügyfélkapcsolatok (előzetes verzió) client_connections_waiting Count Csatlakozás olyan ügyfelektől, amelyek rugalmas Azure Database for PostgreSQL-kiszolgálókapcsolatra várnak a szolgáltatásukhoz DatabaseName Nem
Aktív kiszolgálókapcsolatok (előzetes verzió) server_connections_active Count Csatlakozás rugalmas Azure Database for PostgreSQL-kiszolgálóra, amelyet ügyfélkapcsolat használ DatabaseName Nem
Tétlen kiszolgálókapcsolatok (előzetes verzió) server_connections_idle Count Csatlakozás rugalmas Azure Database for PostgreSQL-kiszolgálóra irányuló, tétlen és új ügyfélkapcsolat kiszolgálására kész kiszolgálóra irányuló Csatlakozás DatabaseName Nem
Összes készletezett kapcsolat (előzetes verzió) total_pooled_connections Count Készletezett kapcsolatok aktuális száma DatabaseName Nem
Kapcsolatkészletek száma (előzetes verzió) num_pools Count Kapcsolatkészletek teljes száma DatabaseName Nem

További információ: PgBouncer-metrikák.

Felügyeleti konzol

A PgBouncer egy belső adatbázist pgbounceris biztosít. Amikor csatlakozik az adatbázishoz, futtathat SHOW olyan parancsokat, amelyek információt nyújtanak a PgBouncer aktuális állapotáról.

Csatlakozás az pgbouncer adatbázishoz:

  1. Állítsa a paramétert pgBouncer.stats_users egy meglévő felhasználó nevére (például myUser), és alkalmazza a módosításokat.

  2. Csatlakozás az pgbouncer adatbázishoz felhasználóként, és állítsa be a portot a következőként6432:

    psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=pgbouncer user=myUser password=myPassword sslmode=require"
    

Miután csatlakozott az adatbázishoz, SHOW parancsokkal megtekintheti a PgBouncer statisztikáit:

  • SHOW HELP: Listázhatja az összes elérhető SHOW parancsot.
  • SHOW POOLS: Az egyes készletek egyes állapotaiban lévő kapcsolatok számának megjelenítése.
  • SHOW DATABASES: Az egyes adatbázisok aktuális alkalmazott kapcsolati korlátainak megjelenítése.
  • SHOW STATS: A kérelmek és a forgalom statisztikáinak megjelenítése minden adatbázis esetében.

A PgBouncer SHOW parancsokkal kapcsolatos további információkért lásd Rendszergazda konzolt.

Az alkalmazás váltása a PgBouncer használatára

A PgBouncer használatának megkezdéséhez kövesse az alábbi lépéseket:

  1. Csatlakozzon az adatbázis-kiszolgálóhoz, de a normál 5432-es port helyett használja a 6432-es portot. Ellenőrizze, hogy működik-e a kapcsolat.

    psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=postgres user=myUser password=myPassword sslmode=require"
    
  2. Tesztelje az alkalmazást minőségbiztosítási környezetben a PgBouncerrel, hogy biztosan ne legyen kompatibilitási problémája. A PgBouncer projekt kompatibilitási mátrixot biztosít, és a legtöbb felhasználó számára javasoljuk a tranzakciók készletezését .

  3. Módosítsa az éles alkalmazást úgy, hogy az 5432 helyett a 6432-s porthoz csatlakozzon. Figyelje az alkalmazásoldali hibákat, amelyek kompatibilitási problémákra utalhatnak.

PgBouncer zónaredundáns magas rendelkezésre állásban

Zónaredundáns, magas rendelkezésre állású (HA) kiszolgálókon az elsődleges kiszolgáló a PgBouncert futtatja. Az elsődleges kiszolgálón a 6432-s porton keresztül csatlakozhat a PgBouncerhez. A feladatátvételt követően a PgBouncer újraindul az újonnan előléptetett készenléti gépen, amely most az elsődleges kiszolgáló. Így az alkalmazás kapcsolati sztring a feladatátvétel után is ugyanaz marad.

A PgBouncer használata más kapcsolatkészletekkel

Bizonyos esetekben előfordulhat, hogy már rendelkezik alkalmazásoldali kapcsolatkészlettel, vagy a PgBouncer be van állítva az alkalmazás oldalán (például egy Azure Kubernetes Service oldalkocsi). Ezekben az esetekben a beépített PgBouncer funkció továbbra is hasznos lehet, mivel az alapjárati kapcsolat skálázásának előnyeit biztosítja.

Hasznos lehet az alkalmazásoldali készlet és a PgBouncer együttes használata az adatbázis-kiszolgálón. Itt az alkalmazásoldali készlet a kisebb kezdeti kapcsolati késés előnyeit hozza létre (mivel a kapcsolat inicializálásához szükséges lekerekítés sokkal gyorsabb), és az adatbázisoldali PgBouncer tétlen kapcsolat skálázását biztosítja.

Korlátozások

  • A PgBouncer funkció jelenleg nem támogatott a burstable kiszolgáló számítási szintje esetében. Ha a számítási szintet általános célúról vagy memóriaoptimalizáltról Burstable-re módosítja, elveszíti a beépített PgBouncer-képességet.

  • Amikor a kiszolgáló újraindul a méretezési műveletek, a HA feladatátvétel vagy újraindítás során, a PgBouncer és a virtuális gép is újraindul. Ezután újra létre kell hoznia a meglévő kapcsolatokat.

  • A portál nem jeleníti meg az összes PgBouncer paramétert. A PgBouncer engedélyezése és a paraméterek mentése után be kell zárnia a Kiszolgáló paraméterei panelt (például az Áttekintés lehetőséget), majd vissza kell lépnie a Kiszolgáló paraméterei panelre.

  • A tranzakció- és utasításkészlet-módokat az előkészített utasítások mellett nem használhatja. A kiválasztott készlet mód egyéb korlátainak ellenőrzéséhez tekintse meg a PgBouncer dokumentációját.

  • Ha a PgBouncer szolgáltatásként van üzembe helyezve, az egy lehetséges meghibásodási ponttá válik. Ha a PgBouncer szolgáltatás leállt, az megzavarhatja a teljes adatbázis-kapcsolatkészletet, és leállást okozhat az alkalmazás számára. Az egyetlen meghibásodási pont csökkentése érdekében több PgBouncer-példányt is beállíthat egy terheléselosztó mögött az Azure-beli virtuális gépek magas rendelkezésre állása érdekében.

  • A PgBouncer egy egyszerű alkalmazás, amely egyszálas architektúrát használ. Ez a kialakítás nagyszerűen használható a legtöbb alkalmazás-számítási feladathoz. A sok rövid élettartamú kapcsolatot létrehozó alkalmazásokban azonban ez a kialakítás hatással lehet a pgBouncer teljesítményére, és korlátozhatja az alkalmazás méretezési képességét. Előfordulhat, hogy az alábbi módszerek egyikét kell kipróbálnia:

    • Ossza el a kapcsolati terhelést több PgBouncer-példány között az Azure-beli virtuális gépeken.
    • Fontolja meg az alternatív megoldásokat, beleértve a többszálú megoldásokat, például a PgCat-et az Azure-beli virtuális gépeken.

Fontos

A beépített PgBouncer szolgáltatás paramétere pgbouncer.client_tls_sslmode elavult a rugalmas Azure Database for PostgreSQL-kiszolgálón.

Ha a rugalmas Azure Database for PostgreSQL-kiszolgálóhoz való csatlakozáshoz szükséges TLS/SSL a kiszolgálóparaméter ONbeállításával require_secure_transport van kényszerítve, a TLS/SSL automatikusan kényszerítve lesz a beépített PgBouncer szolgáltatással való kapcsolatokhoz. Ez a beállítás alapértelmezés szerint be van kapcsolva, amikor új rugalmas Azure Database for PostgreSQL-kiszolgálópéldányt hoz létre, és engedélyezi a beépített PgBouncer funkciót. További információ: Az Azure Database for PostgreSQL – Rugalmas, privát hozzáférésű kiszolgáló hálózatkezelési áttekintése.

Az egyszerűsített felügyeletet, a beépített magas rendelkezésre állást, a tárolóalapú alkalmazásokkal való egyszerű kapcsolatot és a legnépszerűbb konfigurációs paraméterek használatát igénylő ügyfelek számára a beépített PgBouncer funkció jó választás. Azoknak az ügyfeleknek, akik többszálú skálázhatóságot, az összes paraméter teljes felügyeletét és hibakeresési élményt szeretnének, alternatív megoldás lehet a PgBouncer beállítása Azure-beli virtuális gépeken.

Következő lépések