Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Flexibilní instance serverů Azure Database for PostgreSQL nabízí nástroj PgBouncer jako integrované řešení sdružování připojení. PgBouncer je volitelná funkce, kterou můžete povolit pro každý databázový server. Podporuje se na výpočetních úrovních Pro obecné účely a Optimalizováno pro paměť v sítích veřejného přístupu i privátního přístupu.
PgBouncer běží na stejném virtuálním počítači jako databázový server pro instanci flexibilního serveru Azure Database for PostgreSQL. Postgres používá pro připojení model založený na procesu, takže údržba mnoha nečinných připojení je nákladná. Postgres narazí na omezení prostředků, když server běží více než několik tisíc připojení. Hlavní výhodou nástroje PgBouncer je zlepšení nečinných připojení a krátkodobých připojení na databázovém serveru.
PgBouncer používá jednoduchý model, který využívá asynchronní vstupně-výstupní operace. Používá připojení Postgres pouze v případě potřeby– to znamená, že uvnitř otevřené transakce nebo když je dotaz aktivní. Tento model umožňuje škálování až na 10 000 připojení s nízkou režií.
PgBouncer běží na portu 6432 na vašem databázovém serveru. Konfiguraci připojení k databázi aplikace můžete změnit tak, aby používala stejný název hostitele, ale změňte port na 6432, abyste mohli začít používat Nástroj PgBouncer a těžit z lepšího škálování nečinných připojení.
PgBouncer ve službě Azure Database for PostgreSQL podporuje ověřování Microsoft Entra (Azure AD).
PgBouncer s elastickými clustery
PgBouncer je také k dispozici pro elastické clustery. Každý uzel v elastickém clusteru má svou vlastní instanci PgBouncer. Po povolení bude port 6432 směrovat na PgBouncer na koordinačním uzlu elastického clusteru. Kromě toho port 8432 bude směrovat na instance PgBouncer spuštěné na pracovních uzlech v clusteru.
V současné době je verze PgBouncer nasazená ve všech podporovaných hlavních verzích modulu (18, 17, 16, 15, 14, 13, 12, 11) ve službě Azure Database for PostgreSQL 1.23.1.
Povolení a konfigurace nástroje PgBouncer
PgBouncer je zvlášť užitečný v transakčních aplikacích, kde časté četnosti změn připojení může snížit výkon. Ve výchozím nastavení je povolený na portu 6432 a můžete se k němu připojit pomocí stejného názvu hostitele jako server PostgreSQL, ale s portem 6432 místo výchozího portu 5432.
Pokud chcete povolit PgBouncer, přejděte na webu Azure Portal do podokna Parametry serveru, vyhledejte PgBouncer a změňte pgbouncer.enabled nastavení na true. Server není potřeba restartovat.
Nastavení PgBouncer můžete nakonfigurovat pomocí těchto parametrů.
Poznámka:
Následující seznam parametrů serveru PgBouncer je viditelný v podokně Parametry Jinak jsou záměrně skryté.
| Název parametru | Popis | Výchozí |
|---|---|---|
| pgbouncer.default_pool_size (výchozí velikost fondu) | Nastavte tuto hodnotu parametru na počet připojení na dvojici uživatelů/databáze. | 50 |
| pgbouncer.ignore_startup_parameters | Zadejte čárkami oddělený seznam parametrů, které může PgBouncer ignorovat. Můžete například nechat PgBouncer ignorovat extra_float_digits parametr. Některé parametry jsou povoleny; všichni ostatní vyvolá chybu. Tato schopnost je potřebná k tomu, aby bylo možné tolerovat přílišné připojení databáze Java (JDBC), které chce bezpodmínečně nastavit extra_float_digits=2 ve spouštěcích paketech. Tuto možnost použijte, pokud knihovna, kterou používáte, hlásí chyby, například pq: unsupported startup parameter: extra_float_digits. |
|
| pgbouncer.max_client_conn | Nastavte tuto hodnotu parametru na maximální počet klientských připojení k nástroji PgBouncer, který chcete podporovat. Výchozí hodnota je 5000 s povoleným rozsahem od 1 do 50 000. | 5 000 |
| pgbouncer.max_prepared_statements | Pokud je nastavena na nenulovou hodnotu PgBouncer sleduje protokol-úroveň pojmenované připravené příkazy související příkazy odeslané klientem v režimu transakce a příkazu sdružování. | 0 |
| pgbouncer.min_pool_size | Pokud je toto číslo pod tímto číslem, přidejte do fondu další připojení k serveru. | 0 |
| pgbouncer.pool_mode | Tuto hodnotu parametru nastavte na TRANSACTION pro sdružování transakcí (což je doporučené nastavení pro většinu úloh). | transakce |
| pgbouncer.query_wait_timeout | Maximální doba (v sekundách) dotazů může strávit čekáním na spuštění. Pokud během této doby není dotaz přiřazen k serveru, klient se odpojí. | 120 |
| pgbouncer.server_idle_timeout | Pokud bylo připojení k serveru nečinné déle, než je tento počet sekund, dojde k jeho vyřazení. Pokud je hodnota 0, časový limit je zakázaný. | 600 |
| pgbouncer.stats_users | Seznam uživatelů databáze oddělených čárkami, kteří se můžou připojit a spouštět dotazy jen pro čtení v konzole pgBouncer. |
Další informace o konfiguracích PgBouncer najdete v pgbouncer.ini dokumentaci.
Zaměstnanecké výhody
Pomocí integrované funkce PgBouncer s instancí flexibilního serveru Azure Database for PostgreSQL můžete získat tyto výhody:
Pohodlí zjednodušené konfigurace: Vzhledem k tomu, že pgBouncer je integrovaný s vaší instancí flexibilního serveru Azure Database for PostgreSQL, není nutné provádět samostatnou instalaci ani složitou instalaci. Můžete ho nakonfigurovat přímo z parametrů serveru.
Spolehlivost spravované služby: PgBouncer nabízí výhody spravovaných služeb Azure. Azure například spravuje aktualizace pgBounceru. Automatické aktualizace eliminují potřebu ruční údržby a zajišťují, aby pgBouncer zůstal aktuální s nejnovějšími funkcemi a opravami zabezpečení.
Podpora různých typů připojení: PgBouncer ve službě Azure Database for PostgreSQL poskytuje podporu pro veřejná i privátní připojení. Můžete ho použít k navázání zabezpečených připojení přes privátní sítě nebo k externímu připojení v závislosti na konkrétních požadavcích.
Vysoká dostupnost ve scénářích převzetí služeb při selhání: Pokud je pohotovostní server povýšen na primární roli během převzetí služeb při selhání, pgBouncer se bez problémů restartuje v nově propagovaném pohotovostním režimu. V připojovací řetězec aplikace nemusíte provádět žádné změny. Tato schopnost pomáhá zajistit nepřetržitou dostupnost a minimalizovat přerušení fondu připojení aplikace.
Monitorování nástroje PgBouncer
Metriky
Metriky PgBouncer můžete použít ke sledování výkonu procesu PgBouncer, včetně podrobností o aktivních připojeních, nečinných připojeních, celkových připojeních ve fondu a počtu fondů připojení. Každá metrika se vygeneruje v 1minutovém intervalu a má až 93 dnů historie. Zákazníci můžou nakonfigurovat upozornění na metriky a také přistupovat k novým dimenzím metrik, aby mohli rozdělit a filtrovat data metrik podle názvu databáze.
Jak povolit metriky PgBouncer
- Pokud chcete monitorovat metriky PgBouncer, ujistěte se, že je funkce pgbouncer povolená prostřednictvím parametru
pgbouncer.enabledserveru a je povolený parametrmetrics.pgbouncer_diagnosticsmetrik. - Tyto parametry jsou dynamické a nevyžadují restartování instance.
- Metriky PgBouncer jsou ve výchozím nastavení zakázané.
Seznam metrik PgBouncer
| Zobrazované jméno | ID metriky | Jednotka | Popis | Dimenze | Výchozí povoleno |
|---|---|---|---|---|---|
| Aktivní klientská připojení | client_connections_active |
Počet | Připojení od klientů spojených s flexibilním serverem Azure Database for PostgreSQL. | Název databáze | Ne |
| Čekání klientských připojení | client_connections_waiting |
Počet | Připojení z klientů, kteří čekají na to, až flexibilní server Azure Database for PostgreSQL zpracuje jejich požadavky. | Název databáze | Ne |
| Aktivní připojení k serveru | server_connections_active |
Počet | Připojení k flexibilnímu serveru Azure Database for PostgreSQL, která jsou využívána připojením klienta. | Název databáze | Ne |
| Nečinná připojení k serveru | server_connections_idle |
Počet | Připojení k flexibilnímu serveru Azure Database for PostgreSQL, který je nečinný a připravený obsloužit nové klientské připojení. | Název databáze | Ne |
| Celkový počet sdružených připojení | total_pooled_connections |
Počet | Aktuální počet sdružených připojení. | Název databáze | Ne |
| Počet připojovacích poolů | num_pools |
Počet | Celkový počet poolů připojení | Název databáze | Ne |
Důležité informace o používání metrik PgBouncer
- Metriky PgBouncer, které používají dimenzi DatabaseName, mají limit 30 databází .
- U SKU s možností nárazového škálování je limit 10 databází, které mají atribut DatabaseName.
- Omezení dimenze DatabaseName se použije na sloupec OID, který odráží pořadí vytvoření databáze.
Další informace najdete v tématu Metriky PgBouncer.
Konzola správce
PgBouncer také poskytuje interní databázi s názvem pgbouncer. Když se k této databázi připojíte, můžete spustit SHOW příkazy, které poskytují informace o aktuálním stavu pgBouncer.
Připojení k pgbouncer databázi:
pgBouncer.stats_usersNastavte parametr na název existujícího uživatele (napříkladmyUser) a použijte změny.Připojte se k
pgbouncerdatabázi jako tento uživatel a nastavte port takto6432:psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=pgbouncer user=myUser password=<password> sslmode=require"
Po připojení k databázi použijte SHOW příkazy k zobrazení statistik PgBouncer:
-
SHOW HELP: Vypíše všechny dostupnéSHOWpříkazy. -
SHOW POOLS: Zobrazí počet připojení v jednotlivých stavech pro každý fond. -
SHOW DATABASES: Zobrazí aktuální použité limity připojení pro každou databázi. -
SHOW STATS: Zobrazit statistiky požadavků a přenosů pro každou databázi.
Další informace o příkazech PgBouncer SHOW najdete v konzole pro správu.
Přepnutí aplikace tak, aby používala PgBouncer
Pokud chcete začít používat PgBouncer, postupujte takto:
Připojte se k databázovému serveru, ale místo běžného portu 5432 použijte port 6432. Ověřte, že toto připojení funguje.
psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=postgres user=myUser password=<password> sslmode=require"Otestujte aplikaci v prostředí kontroly kvality proti pgBouncer, abyste měli jistotu, že nemáte žádné problémy s kompatibilitou. Projekt PgBouncer poskytuje matici kompatibility a pro většinu uživatelů doporučujeme sdružování transakcí .
Změňte produkční aplikaci tak, aby se místo 5432 připojila k portu 6432. Monitorujte případné chyby na straně aplikace, které můžou odkazovat na problémy s kompatibilitou.
PgBouncer v zónově redundantní vysoké dostupnosti
V zónově redundantních serverech s vysokou dostupností (HA) primární server spouští Nástroj PgBouncer. K Nástroji PgBouncer se můžete připojit na primárním serveru přes port 6432. Po převzetí služeb při selhání se pgBouncer restartuje v nově propagovaném pohotovostním režimu, což je teď primární server. Takže vaše aplikace připojovací řetězec zůstane po převzetí služeb při selhání stejná.
Použití nástroje PgBouncer s jinými fondy připojení
V některých případech už možná máte fond připojení na straně aplikace nebo máte na straně aplikace nastavený Nástroj PgBouncer (například sajdkáru služby Azure Kubernetes Service). V těchto případech může být integrovaná funkce PgBouncer stále užitečná, protože poskytuje výhody nečinného škálování připojení.
Použití fondu na straně aplikace společně s PgBouncer na databázovém serveru může být výhodné. V tomto případě fond na straně aplikace přináší výhodu snížené počáteční latence připojení (protože odezva pro inicializaci připojení je mnohem rychlejší) a nástroj PgBouncer na straně databáze poskytuje nečinné škálování připojení.
Omezení
- Funkce PgBouncer se v současné době nepodporuje u výpočetní úrovně serveru s možností nárazového škálování. Pokud změníte úroveň výpočetních prostředků z úrovně Pro obecné účely nebo Optimalizováno pro paměť na burstable, ztratíte integrovanou funkci PgBouncer.
- Pokaždé, když se server restartuje během operací škálování, převzetí služeb při selhání vysoké dostupnosti nebo restartování, pgBouncer a virtuální počítač se také restartují. Pak musíte znovu navázat stávající připojení.
- Portál nezobrazuje všechny parametry PgBouncer. Po povolení nástroje PgBouncer a uložení parametrů musíte zavřít podokno Parametry serveru (například vybrat Přehled) a pak se vrátit do podokna Parametry serveru.
- Režimy fondu příkazů nemůžete používat spolu s připravenými příkazy. Aktuální verze pgBouncer přidala podporu připravených příkazů v režimu transakce. Tuto podporu je možné povolit a nakonfigurovat prostřednictvím max_prepared_statements parametru. Nastavení tohoto parametru nad výchozí hodnotou 0 zapne podporu připravených příkazů. Tato podpora se vztahuje pouze na připravené příkazy na úrovni protokolu. U většiny programovacích jazyků to znamená, že na klientovi používáme funkci libpq PQprepare a odesíláme příkazy na úrovni protokolu, které PgBouncer dokáže zachytit, místo aby vydali dynamický příkaz SQL podobný příkazu PREPARE proc AS, který odesílá text, který PgBouncer nebude správně interpretovat. Další omezení zvoleného režimu fondu najdete v dokumentaci PgBouncer.
- Pokud se pgBouncer nasadí jako funkce, stane se potenciálním kritickým bodem selhání. Pokud je funkce PgBouncer mimo provoz, může narušit celý fond připojení k databázi a způsobit výpadky aplikace. Pokud chcete zmírnit kritický bod selhání, můžete nastavit několik instancí PgBouncer za nástrojem pro vyrovnávání zatížení pro zajištění vysoké dostupnosti na virtuálních počítačích Azure.
- Omezení velikosti tokenů s ověřováním Azure AD – Uživatelé s velkým počtem členství ve skupinách se nebudou moct připojit přes PgBouncer kvůli omezení velikosti tokenu. Aplikace, služby a uživatelé s malým počtem skupin pracují.
- PgBouncer je jednoduchá aplikace, která používá architekturu s jedním vláknem. Tento návrh je skvělý pro většinu úloh aplikací. Ale v aplikacích, které vytvářejí velký počet krátkodobých připojení, může tento návrh ovlivnit výkon pgBouncer a omezit vaši schopnost škálovat aplikaci. Možná budete muset vyzkoušet jeden z těchto přístupů:
- Distribuujte zatížení připojení mezi několik instancí PgBouncer na virtuálních počítačích Azure.
- Zvažte alternativní řešení, včetně vícevláknových řešení, jako je PgCat, na virtuálních počítačích Azure.
Důležité
Parametr pgbouncer.client_tls_sslmode integrované funkce PgBouncer je v Azure Database for PostgreSQL zastaralý.
Když se TLS/SSL vynucuje pro připojení k instanci flexibilního serveru Azure Database for PostgreSQL nastavením parametru require_secure_transport serveru na ON, TLS/SSL se automaticky vynucuje i pro připojení k integrované funkci PgBouncer. Toto nastavení je ve výchozím nastavení zapnuté, když vytvoříte novou instanci flexibilního serveru Azure Database for PostgreSQL a povolíte integrovanou funkci PgBouncer. Další informace najdete v tématu Zabezpečení připojení pomocí protokolu TLS ve službě Azure Database for PostgreSQL.
Pro zákazníky, kteří chtějí zjednodušenou správu, integrovanou vysokou dostupnost, snadné připojení ke kontejnerizovaným aplikacím a možnost používat nejoblíbenější konfigurační parametry, je vhodná integrovaná funkce PgBouncer. Pro zákazníky, kteří chtějí vícevláknovou škálovatelnost, plnou kontrolu nad všemi parametry a prostředí ladění, může být nastavení PgBouncer na virtuálních počítačích Azure alternativou.