PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Używanie puli połączeń PgBouncer dla PostgreSQL z ClusterControl 1.8.2

Nowoczesne aplikacje, takie jak mikroserwisy, zazwyczaj wymagają wielu połączeń z bazami danych, a także bardzo szybko je wykorzystują i zwalniają. Kiedy PostgreSQL był rozwijany prawie 25 lat temu, jego twórcy zdecydowali nie używać wątków dla nowych żądań, ale zamiast tego stworzyć nowy proces dla każdego żądania. Chociaż ta decyzja prawdopodobnie miała wtedy sens, wiele powiązań może dziś stanowić poważny problem. Jednym z rozwiązań tego problemu jest pula połączeń. W tym poście na blogu omówimy pulę połączeń PgBouncer i sposób jej wykorzystania w ClusterControl 1.8.2.

Dlaczego warto korzystać z puli połączeń

Cóż, krótka odpowiedź na to pytanie brzmi, że jest to proste, ale skuteczne rozwiązanie poprawiające wydajność Twoich aplikacji, jednocześnie zmniejszające obciążenie serwera PostgreSQL. Zajrzyjmy trochę głębiej, dobrze?

Pula połączeń może być zdefiniowana jako pamięć podręczna otwartych połączeń z bazą danych, z której mogą korzystać klienci. Innymi słowy, zmniejszy obciążenie bazy danych, zmniejszając liczbę żądań przy każdym nowym połączeniu. Te nowe połączenia są w zasadzie tworzone przez proces postmastera za każdym razem, gdy nawiązywane jest połączenie, które zwykle zajmuje około 2 do 3 MB pamięci na połączenie.

Bez puli połączeń prowadzi to do problemów, gdy liczba połączeń jest zbyt duża, ponieważ postmaster musi zapewnić dużo pamięci. W PostgreSQL pulą połączeń zarządza PgBouncer.

Co to jest PgBouncer

PgBouncer to lekki, pojedynczy plik binarny, open-source i prawdopodobnie najpopularniejszy pooler połączeń dla PostgreSQL. PgBouncer to proste narzędzie, które robi dokładnie jedną rzecz, znajduje się między bazą danych a klientami i obsługuje protokół PostgreSQL, kopiując serwer PostgreSQL. W chwili pisania tego tekstu najnowsza wersja PgBouncer to 1.15.0.

Zobaczmy, jakie są niektóre z najlepszych funkcji, które oferuje i prawdopodobnie powód, dla którego jest tak popularny w świecie PostgreSQL:

  • Lekki - tylko jeden proces, wszystkie żądania od klienta i odpowiedzi z serwera przechodzą przez PgBouncer bez żadnych dodatkowych przetwarzanie

  • Łatwa konfiguracja – nie wymaga zmian kodu po stronie klienta i jednego z najprostszych poolerów połączeń PostgreSQL do konfiguracji

  • Skalowalność i wydajność – dobrze skaluje się do dużej liczby klientów i jednocześnie znacząco zwiększa transakcje na sekundę, którą może obsłużyć serwer PostgreSQL

Kroki konfiguracji PgBouncera za pomocą ClusterControl

Istnieje kilka kroków, aby zainstalować i skonfigurować PgBouncer z ClusterControl. W tej sekcji przejdziemy przez kolejne kroki, pod warunkiem, że masz już wdrożony klaster PostgreSQL. Jeśli nie masz jeszcze klastra, możesz skorzystać z przewodnika w tym poście na blogu.

W interfejsie WWW> Wybierz Klaster PostgreSQL> Zarządzaj> Load Balancer> Wybierz zakładkę PgBouncer, a pojawi się następujący zrzut ekranu. Tutaj możesz wybrać, czy chcesz wdrożyć lub zaimportować PgBouncer, w tym przykładzie wybierzemy Wdrożenie.:

Możesz wybrać węzeł z listy rozwijanej, określić port, dodać ' PgBouncer Admin User' oraz hasło i kliknij 'Deploy PgBouncer'. Zadanie rozpocznie się, a status zacznie pojawiać się na tym ekranie, możesz go również monitorować w zakładce „Aktywność”.

Po pomyślnym wdrożeniu węzła PgBouncer następnym krokiem jest utworzenie puli połączeń. Z Twojego klastra> Węzły> Wybierz węzeł PgBouncer, a pojawi się następujący zrzut ekranu:

Ekran połączenia pojawi się po kliknięciu „Utwórz pulę połączeń”. przycisk. Możesz wypełnić wszystkie informacje i zaktualizować wartość w zależności od konfiguracji, w tym przykładzie użyjemy wartości domyślnej dla „Trybu puli”, „Rozmiaru puli” i „Maksymalnego połączenia z bazą danych”:

Tutaj musisz dodać następujące informacje:

  • Nazwa hosta PgBouncer:Wybierz hosty węzłów, aby utworzyć pulę połączeń.

  • Nazwa puli:Nazwy puli i bazy danych muszą być takie same.

  • Nazwa użytkownika:  Wybierz użytkownika z węzła głównego PostgreSQL lub utwórz nowego.

  • Tryb puli:łączenie sesji (domyślnie), transakcji lub wyciągów.

    • sesja (domyślnie):Serwer jest zwalniany z powrotem do puli po rozłączeniu klienta

    • transakcja:serwer zostaje zwolniony z powrotem do puli po zakończeniu transakcji

    • instrukcja:Serwer jest zwalniany z powrotem do puli po zakończeniu zapytania. Transakcje obejmujące wiele wyciągów są w tym trybie niedozwolone

  • Rozmiar puli:Maksymalny rozmiar pul dla tej bazy danych. Domyślna wartość to 20.

  • Maksymalna liczba połączeń z bazą danych:Skonfiguruj maksimum dla całej bazy danych. Domyślna wartość to 0, co oznacza nieograniczone.

Pula połączeń pojawi się po kliknięciu przycisku „Zakończ”, jak na poniższym zrzucie ekranu, a zarówno PgBouncer, jak i pula połączeń są teraz gotowe:

Wnioski

Korzystanie z puli połączeń i PgBouncer to tylko niektóre z kroków w celu poprawy wydajności aplikacji, jeśli chodzi o wysoką dostępność. Dzięki ClusterControl możesz łatwo i szybko wdrożyć PgBouncer, a także utworzyć pulę połączeń.

Aby uczynić go jeszcze lepszym, sugerujemy również wdrożenie HAProxy oprócz PgBouncer. Funkcja HAProxy jest dostępna w ClusterControl i w chwili pisania tego tekstu używamy wersji 1.8.23.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalowanie Postgresa w systemie Windows do użytku z Ruby-on-Rails

  2. Wydajność TPC-H od PostgreSQL 8.3

  3. Aktualizacja PostgreSQL 11 do PostgreSQL 13 z TimescaleDB i PostGIS w systemie Linux przy użyciu pg_upgrade

  4. mysql_insert_id alternatywa dla postgresql

  5. Systemy plików Linux i testy punktów kontrolnych PostgreSQL