Das PostgreSQL-Verbindungsproblem
PostgreSQL erstellt pro Verbindung einen neuen Prozess, was Speicher und CPU verbraucht. PgBouncer ist ein leichter Pooler zwischen Anwendung und Datenbank.
Voraussetzungen
- Linux-Server mit PostgreSQL (12+).
- Root- oder Sudo-Zugang.
Schritt-für-Schritt Einrichtung
1. PgBouncer Installieren
sudo apt update && sudo apt install pgbouncer
2. Authentifizierung Konfigurieren
sudo -u postgres psql -Atq -c "SELECT concat('\"', usename, '\" \"', passwd, '\"') FROM pg_shadow;" > /tmp/userlist.txt
sudo mv /tmp/userlist.txt /etc/pgbouncer/userlist.txt
sudo chown postgres:postgres /etc/pgbouncer/userlist.txt
sudo chmod 600 /etc/pgbouncer/userlist.txt
3. pgbouncer.ini Konfigurieren
[databases]
meinedb = host=127.0.0.1 port=5432 dbname=meinedb
[pgbouncer]
listen_addr = *
listen_port = 6432
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
pool_mode = transaction
default_pool_size = 20
max_client_conn = 2000
4. Anwendung Verbinden
Ändern Sie den Port von 5432 auf 6432.
Zusammenfassung
- Verwenden Sie PgBouncer, um Speichermangel zu vermeiden.
- Setzen Sie
pool_mode = transactionfür Webanwendungen.