Megosztás a következőn keresztül:


PgBouncer az Azure Database for PostgreSQL-ben

Az Azure Database for PostgreSQL flexibilis kiszolgálópéldányai beépítve kínálják a PgBouncert mint kapcsolatkészletezési megoldást. 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ópéldány 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.

Az Azure Database for PostgreSQL-ben található PgBouncer támogatja a Microsoft Entra-hitelesítést (Azure AD).

PgBouncer rugalmas fürtökkel

A PgBouncer rugalmas fürtökhöz is elérhető. Egy rugalmas fürt minden csomópontjának saját PgBouncer-példánya van. Az engedélyezést követően a 6432-es port a rugalmas fürtkoordinátor csomóponton lévő PgBouncerre irányítja. Emellett a 8432-es port a fürt feldolgozó csomópontjaiban futó PgBouncer-példányokra fog irányítani.

Jelenleg a motor összes támogatott főverzióján (18, 17, 16, 15, 14, 13, 12, 11) üzembe helyezett PgBouncer verziója az Azure Database for PostgreSQL-ben 1.23.1.

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

A PgBouncer különösen hasznos tranzakciós alkalmazásokban, ahol a gyakori kapcsolatváltozás csökkentheti a teljesítményt. Alapértelmezés szerint a 6432-es porton keresztül engedélyezve van, és a PostgreSQL-kiszolgálóval megegyező gazdagépnévvel csatlakozhat hozzá, de az alapértelmezett 5432-es port helyett a 6432-es portot használva.

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 (alapértelmezett medence mérete) Á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 (indítsuk figyelmen kívül paraméterek) 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-kapcsolat (JDBC) túlzott használatát, és 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 be ezt a paraméterértéket a támogatni kívánt PgBouncer ügyfélkapcsolatainak maximális számára. Az alapértelmezett érték 5000, a megengedett tartomány 1 és 50 000 között van 5 000
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 (a kívánt minimális medenceméret beállítása) 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. Százhúsz
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.

Juttatások

A rugalmas Azure Database for PostgreSQL-kiszolgálópéldány 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ópéldánysal, 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: Az Azure Database for PostgreSQL-ben 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 PgBouncer-metrikák használatával figyelheti a PgBouncer-folyamat teljesítményét, beleértve az aktív kapcsolatok, az inaktív kapcsolatok, a készletezett kapcsolatok teljes számát és a kapcsolatkészletek számát. Minden metrikát 1 perces időközönként bocsát ki, és legfeljebb 93 napos előzményei vannak. Az ügyfelek riasztásokat konfigurálhatnak a metrikákhoz, és az új metrikák dimenzióihoz is hozzáférhetnek, hogy adatbázisnév alapján felosztják és szűrhessék a metrikák adatait.

PgBouncer-metrikák engedélyezése

  • A PgBouncer-metrikák monitorozásához győződjön meg arról, hogy a pgbouncer funkció engedélyezve van a kiszolgálóparaméteren pgbouncer.enabled keresztül, és a metrikák paraméter metrics.pgbouncer_diagnostics engedélyezve van.
  • Ezek a paraméterek dinamikusak, és nem igényelnek példány-újraindítást.
  • A PgBouncer-metrikák alapértelmezés szerint le vannak tiltva.

PgBouncer-metrikák listája

Megjelenített név Metrikaazonosító Unit (Egység) Leírás Dimenzió Alapértelmezett engedélyezve
Aktív ügyfélkapcsolatok client_connections_active Számlál Azok az ügyfélkapcsolatok, amelyek az Azure Database for PostgreSQL rugalmas kiszolgálóval való kapcsolathoz társulnak. AdatbázisNeve Nem
Várakozási ügyfélkapcsolatok client_connections_waiting Számlál Olyan ügyfelek kapcsolatai, amelyek rugalmas Azure Database for PostgreSQL-kiszolgálókapcsolatra várnak a szolgáltatásukhoz. AdatbázisNeve Nem
Aktív kiszolgálókapcsolatok server_connections_active Számlál Rugalmas Azure Database for PostgreSQL-kiszolgálóval létesített kapcsolatok, amelyeket egy ügyfélkapcsolat használ. AdatbázisNeve Nem
Kihasználatlan szerverkapcsolatok server_connections_idle Számlál Az Azure Database for PostgreSQL rugalmas kiszolgálóhoz kapcsolódó kapcsolatok, amelyek nincsnek használatban, és készen állnak egy új ügyfélkapcsolat fogadására. AdatbázisNeve Nem
Összes közös kapcsolat total_pooled_connections Számlál Összevont kapcsolatok aktuális száma. AdatbázisNeve Nem
Kapcsolatkészletek száma num_pools Számlál Kapcsolatkészletek teljes száma. AdatbázisNeve Nem

A PgBouncer-metrikák használatának szempontjai

  • A DatabaseName dimenziót használó PgBouncer-metrikák 30-adatbáziskorlátot használnak.
  • A Burstálható termékváltozatban a korlát 10 adatbázis, amelyeket az Adatbázisnév dimenzió jellemez.
  • A DatabaseName dimenziókorlát az OID oszlopra lesz alkalmazva, amely az adatbázis létrehozási sorrendjét tükrözi.

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. Csatlakozzon az pgbouncer adatbázishoz felhasználóként, és állítsa be a portot a következőként 6432:

    psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=pgbouncer user=myUser password=<password> 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 a felügyeleti 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=<password> 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.
  • Az előkészített utasításokkal együtt nem használhat utasításkészlet-módokat. A PgBouncer jelenlegi verziója a tranzakciós módon belüli előkészített utasítások támogatását is hozzáadta. Ez a támogatás max_prepared_statements paraméter használatával engedélyezhető és konfigurálható. Ha ezt a paramétert a 0 alapértelmezett érték fölé állítja, bekapcsolja az előkészített utasítások támogatását. Ez a támogatás csak a protokollszintű előkészített utasításokra vonatkozik. A legtöbb programozási nyelv esetében ez azt jelenti, hogy a PQprepare libpq függvényt használjuk az ügyfélen, protokollszintű parancsokat küldünk, amelyeket a PgBouncer képes elfogni, ahelyett, hogy a PREPARE proc AS-hez hasonló dinamikus SQL-parancsot adnánk ki, amely olyan szöveget küld, amelyet a PgBouncer nem fog megfelelően értelmezni. 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.
  • Jogkivonat méretkorlátozása Azure AD-hitelesítéssel – A nagy számú csoporttagságú felhasználók a jogkivonat méretkorlátozása miatt nem tudnak csatlakozni a PgBounceren keresztül. A kis számú csoporttal rendelkező alkalmazások, szolgáltatások és felhasználók működnek.
  • 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 az Azure Database for PostgreSQL-ben.

Ha a rugalmas Azure Database for PostgreSQL kiszolgálópéldányhoz való csatlakozásokra vonatkozó TLS/SSL a kiszolgálóparaméter require_secure_transport beállításával ON kényszerül, akkor a TLS/SSL automatikusan érvénybe lép a beépített PgBouncer szolgáltatáson keresztüli kapcsolatok esetében is. 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ó: Biztonságos kapcsolat a TLS-lel az Azure Database for PostgreSQL-ben.

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.