sql >> Database >  >> RDS >> PostgreSQL

PgBouncer Connection Pooler voor PostgreSQL gebruiken met ClusterControl 1.8.2

Moderne apps zoals microservices vereisen doorgaans veel databaseverbindingen, ze gebruiken deze verbindingen ook zeer snel en geven ze vrij. Toen PostgreSQL bijna 25 jaar geleden werd ontwikkeld, besloten de ontwikkelaars om geen threads te gebruiken voor nieuwe verzoeken, maar om in plaats daarvan een nieuw proces voor elk verzoek te creëren. Hoewel die beslissing toen waarschijnlijk logisch was, kunnen veel verbindingen tegenwoordig een serieus probleem zijn. Een van de oplossingen voor dit probleem is een verbindingspool. In deze blogpost bespreken we PgBouncer Connection Pool en hoe deze te gebruiken in ClusterControl 1.8.2.

Waarom verbindingspool gebruiken

Nou, het korte antwoord op deze vraag is dat het een eenvoudige maar effectieve oplossing is om de prestaties van uw apps te verbeteren en tegelijkertijd de belasting van de PostgreSQL-server te verminderen. Laten we hier wat dieper op ingaan, oké?

Een verbindingspool kan worden gedefinieerd als een cache van open databaseverbindingen die door de clients opnieuw kan worden gebruikt. Met andere woorden, het zal de belasting van de database verminderen door het aantal verzoeken bij elke nieuwe verbinding te verminderen. Die nieuwe verbindingen worden in principe voortgebracht door het postmasterproces telkens wanneer een verbinding tot stand wordt gebracht, wat gewoonlijk ongeveer 2 tot 3 MB geheugen per verbinding in beslag neemt.

Zonder een verbindingspool zal dit tot een probleem leiden wanneer het aantal verbindingen te hoog is, aangezien de postmaster veel geheugen moet voorzien. In PostgreSQL wordt de verbindingspool beheerd door PgBouncer.

Wat is PgBouncer

PgBouncer is een lichtgewicht, single-binary, open-source en waarschijnlijk de meest populaire pooler voor verbindingen voor PostgreSQL. PgBouncer is een eenvoudig hulpprogramma dat precies één ding doet, het zit tussen de database en de clients en spreekt het PostgreSQL-protocol, waarbij een PostgreSQL-server wordt gekopieerd. Op het moment van schrijven is de nieuwste versie van PgBouncer 1.15.0.

Laten we eens kijken wat de beste functies zijn die het biedt, en waarschijnlijk de reden waarom het zo populair is in de PostgreSQL-wereld:

  • Lichtgewicht - slechts één enkel proces, alle verzoeken van de client en reacties van de server passeren PgBouncer zonder enige extra verwerking

  • Eenvoudige installatie – vereist geen codewijzigingen aan de clientzijde en een van de eenvoudigste PostgreSQL-verbindingspoolers om in te stellen

  • Schaalbaarheid en prestaties - het schaalt goed naar een groot aantal klanten en verhoogt tegelijkertijd de transacties aanzienlijk per seconde die de PostgreSQL-server kan ondersteunen

Stappen om PgBouncer in te stellen met ClusterControl

Er zijn een paar stappen om PgBouncer met ClusterControl te installeren en configureren. In deze sectie zullen we de stappen doorlopen, op voorwaarde dat u het PostgreSQL-cluster al hebt geïmplementeerd. Als je het cluster nog niet hebt, kun je de handleiding in deze blogpost volgen.

Vanuit uw web-UI> Selecteer PostgreSQL-cluster> Beheren> Load Balancer> Selecteer het tabblad PgBouncer en de volgende schermafbeelding zal verschijnen. Hier kunt u kiezen of u PgBouncer wilt implementeren of importeren, in dit voorbeeld zullen we Deploy kiezen.:

U kunt het knooppunt selecteren in de vervolgkeuzelijst, de poort specificeren, toevoegen ' PgBouncer Admin User' en het wachtwoord en klik op 'PgBouncer implementeren'. De taak begint te lopen en de status zal in dit scherm verschijnen, u kunt deze ook volgen op het tabblad 'Activiteit'.

Nadat het PgBouncer-knooppunt met succes is geïmplementeerd, is de volgende stap het maken van de verbindingspool. Vanuit uw Cluster> Nodes> Selecteer PgBouncer node en het volgende screenshot zal verschijnen:

Het verbindingsscherm verschijnt zodra u op 'Create Connection Pool' klikt knop. U kunt alle informatie invullen en de waarde bijwerken afhankelijk van uw instellingen, voor dit voorbeeld gebruiken we de standaardwaarde voor 'Pool Mode', 'Pool Size' en 'Max Database Connection':

Hier moet u de volgende informatie toevoegen:

  • PgBouncer-hostnaam:selecteer de node-hosts om de verbindingspool te maken.

  • Poolnaam:pool- en databasenamen moeten hetzelfde zijn.

  • Gebruikersnaam:  Selecteer een gebruiker uit het PostgreSQL-hoofdknooppunt of maak een nieuwe.

  • Poolmodus:sessie (standaard), transactie of pooling van afschriften.

    • sessie (standaard):server wordt weer vrijgegeven aan de pool nadat de verbinding met de client is verbroken

    • transactie:de server wordt weer vrijgegeven aan de pool nadat de transactie is voltooid

    • statement:de server wordt weer vrijgegeven aan de pool nadat de query is voltooid. Transacties die meerdere overzichten beslaan, zijn in deze modus niet toegestaan

  • Poolgrootte:maximale grootte van pools voor deze database. De standaardwaarde is 20.

  • Maximum databaseverbindingen:Configureer een databasebreed maximum. De standaardwaarde is 0, wat onbeperkt betekent.

De verbindingspool verschijnt nadat je op de knop 'Voltooien' hebt geklikt zoals in de onderstaande schermafbeelding en zowel PgBouncer als verbindingspool zijn nu klaar:

Conclusie

Het gebruik van verbindingspool en PgBouncer zijn enkele van de stappen om de prestaties van uw applicatie te verbeteren als het gaat om hoge beschikbaarheid. Met ClusterControl kunt u PgBouncer implementeren en eenvoudig en snel een verbindingspool maken.

Om het nog beter te maken, raden we ook aan om HAProxy te gebruiken naast PgBouncer. De HAProxy-functie is beschikbaar in ClusterControl en op het moment van schrijven is de versie die we gebruiken 1.8.23.


  1. Hoe de datum en tijd op te maken in MySQL

  2. Beste SQL Recovery Tool voor 2020 om cruciale SQL-database te herstellen

  3. Wat is een index in SQL?

  4. SQL:IF-clausule binnen WHERE-clausule