Site icon bintorosoft.com

Connection Pooling: pgbouncer für PostgreSQL im Web Stack

Programmer Bunny with laptop. Easter day concept. Generative Ai.

PostgreSQL kann bei Web-Anwendungen unter hoher Last schnell an seine Grenzen stoßen, da jeder Client eine eigene Verbindung benötigt, die Ressourcen bindet. Connection Pooling reduziert die Anzahl gleichzeitig offener Verbindungen, verbessert die Performance und Stabilität. PgBouncer ist ein schlanker, effizienter Connection Pooler für PostgreSQL, der sich nahtlos in Web-Stacks integrieren lässt. In diesem Leitfaden erfahren Einsteiger, IT-Studierende und Junior Network Engineers, wie PgBouncer installiert, konfiguriert und optimiert wird.

Voraussetzungen

PgBouncer Installation

PgBouncer kann über die Paketmanager installiert werden.

# Ubuntu/Debian
sudo apt update
sudo apt install pgbouncer

# CentOS/RHEL
sudo yum install pgbouncer

# Dienst starten und aktivieren
sudo systemctl start pgbouncer
sudo systemctl enable pgbouncer
sudo systemctl status pgbouncer

PgBouncer-Konfiguration

Die Hauptkonfigurationsdatei befindet sich unter /etc/pgbouncer/pgbouncer.ini. Dort werden Datenbankverbindungen, Pooling-Methoden und Authentifizierung definiert.

Beispielkonfiguration

[databases]
webapp_db = host=127.0.0.1 port=5432 dbname=webapp_db

[pgbouncer]
listen_addr = 0.0.0.0
listen_port = 6432
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
pool_mode = transaction
max_client_conn = 500
default_pool_size = 50
reserve_pool_size = 20
reserve_pool_timeout = 5
logfile = /var/log/pgbouncer/pgbouncer.log
pidfile = /var/run/pgbouncer/pgbouncer.pid

Benutzer und Authentifizierung

PgBouncer benötigt eine Authentifizierungsdatei, die Benutzer und Passwörter enthält.

sudo nano /etc/pgbouncer/userlist.txt

"webapp" "md5d41d8cd98f00b204e9800998ecf8427e"
"admin"  "md5e99a18c428cb38d5f260853678922e03"

Die MD5-Hashes entsprechen den PostgreSQL-Passwörtern.

Start und Test

Nach der Konfiguration wird PgBouncer gestartet und getestet.

sudo systemctl restart pgbouncer
sudo systemctl status pgbouncer

# Testverbindung
psql -h 127.0.0.1 -p 6432 -U webapp webapp_db

Pool-Strategien

PgBouncer unterstützt verschiedene Pool-Modi:

Monitoring und Statistik

PgBouncer bietet administrative Befehle über die Konsole:

psql -h 127.0.0.1 -p 6432 -U webapp pgbouncer

# Abfragen
SHOW POOLS;
SHOW CLIENTS;
SHOW SERVERS;
SHOW STATS;

Optimierung

Netzwerk und Subnetzplanung

In Multi-Server-Umgebungen sollte das Netzwerk sauber geplant sein, um schnelle und sichere Pool-Verbindungen zu gewährleisten.

IPv4 Subnetz

<math>
PgBouncer-IP = 192.168.280.10/24
Subnetzadresse = 192.168.280.10 & 255.255.255.0 = 192.168.280.0
Broadcastadresse = 192.168.280.0 | ~255.255.255.0 = 192.168.280.255
</math>

IPv6 Subnetz

<math>
PgBouncer-IP = 2001:db8:abcd:280::10/64
Subnetzadresse = 2001:db8:abcd:280:: & ffff:ffff:ffff:ffff:: = 2001:db8:abcd:280::0
Broadcastadresse = 2001:db8:abcd:280:ffff:ffff:ffff:ffff
</math>

Best Practices

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version