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
- Linux-Server (Ubuntu/Debian oder CentOS/RHEL)
- PostgreSQL installiert und lauffähig
- Sudo- oder Root-Zugriff
- Grundkenntnisse in Terminal und Texteditoren
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:
- Session: Eine Verbindung pro Client-Session, langlebig
- Transaction: Verbindung pro Transaktion, effizient für Web-Anwendungen
- Statement: Verbindung pro SQL-Statement, maximale Isolation, weniger verbreitet
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
- Maximale Client-Verbindungen an Serverkapazität anpassen (
max_client_conn) - Default Poolgröße für normale Last setzen (
default_pool_size) - Reserve Pool für Spitzenlast definieren (
reserve_pool_size) - Transaction Poolmodus für Web-Applikationen bevorzugen
- Logging aktivieren und prüfen
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
- Separate Benutzer für Anwendungen nutzen
- Transaction Poolmodus für Web-Stack bevorzugen
- Max Client Connections an PostgreSQL-Serverkapazität anpassen
- Reserve Pool für Spitzenlast konfigurieren
- Logs überwachen und Fehler frühzeitig erkennen
- Monitoring über
SHOW POOLSundSHOW STATSdurchführen - TLS/SSL zwischen PgBouncer und PostgreSQL in sensiblen Umgebungen nutzen
- Backups der PgBouncer-Konfiguration und Benutzerdateien
- Netzwerk-Subnetze sauber planen, insbesondere bei Remote-Servern
- Regelmäßige Updates für PgBouncer und PostgreSQL durchführen
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:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

