
Optimierung des Verbindungs-Pooling mit PgBouncer
Die meisten Webanwendungen nutzen Datenbanken zur Speicherung ihrer Daten. Client-Anwendungen können die Informationen aus der Datenbank abrufen, indem sie eine Verbindung zu dieser herstellen. Jede Abfrage verbraucht Ressourcen wie Speicher, Portzuweisung und CPU-Zeit. Eine Transaktion kann Millisekunden dauern, aber die Herstellung einer Verbindung kann mehrere Sekunden in Anspruch nehmen.
Um den Verbindungsaufbau zu PostgreSQL zu vereinfachen, insbesondere wenn ein hohes Volumen an Client-Verbindungen erwartet wird, können Sie PgBouncer verwenden, um Client-Datenbank-Verbindungen effektiv zu verwalten. Es ist ein beliebter Verbindungs-Pooler, der einmal eine Verbindung zur Datenbank herstellt und diese Verbindung für verschiedene Clients mehrfach verwendet. Dies ist nicht der einzige Vorteil der Nutzung von PgBouncer.
Nehmen wir an, Sie haben 100 Clients, die eine Verbindung zu Ihrer Datenbank herstellen müssen und Sie möchten das Datenbank-Benutzerkennwort nicht mit diesen Clients teilen. In diesem Fall können Sie PgBouncer verwenden. Sie können individuelle Logins und Passwörter festlegen, um die Verbindung herzustellen, sodass PgBouncer und Clients die Datenbank-Benutzerkennwörter nicht verwenden. Außerdem können Sie einen Alias-Namen für die Datenbank zuweisen, sodass die Clients den echten Namen der Datenbank nicht sehen.
Anstelle der Erstellung einer Datenbankverbindung wird eine Verbindung mit dem PgBouncer hergestellt, die bereits bestehende Datenbankverbindungen nutzt.
DataSunrise Database Security Suite unterstützt neben vielen anderen Funktionen auch das Pooling mit PgBouncer. Durch eine effektive Zusammenarbeit mit der Client-Datenbank-Zuordnung sorgt sie für umfassende Datenbanksicherheit, wenn PgBouncer läuft.
Vorteile der Nutzung von PgBouncer-Verbindungspools:
- Reduzierung der Verarbeitungslaufzeit
- Reduzierung des Verbrauchs von Serverressourcen für die Pflege einer großen Anzahl von Serververbindungen zu einer oder mehreren Datenbanken
- Unterstützung von Online-Neustarts oder Upgrades ohne Unterbrechung der Client-Verbindungen
- Verschleierung des echten Namens der Datenbank
- Vermeidung der Weitergabe eines Datenbank-Benutzerkennworts an alle Client-Anwendungen
Konfiguration von PgBouncer
Nach der Installation funktioniert PgBouncer als Dienst unter Windows und als Daemon unter Linux (in beiden Fällen als pgbouncer bezeichnet).
Um Konfigurationseinstellungen zu ändern, finden Sie die Datei pgbouncer.ini im folgenden Verzeichnis: pgbouncer/share. Sie enthält die folgenden Parameter:
[database] Abschnitt | Sie können Datenbanken hinzufügen, deren Hosts und Ports definieren, Alias-Namen für die Datenbanken zuweisen und einen Datenbank-Benutzerlogin und ein Passwort festlegen (alle Clients, die über PgBouncer mit dem angegebenen Aliasnamen verbunden sind, verwenden den in diesem Abschnitt angegebenen DB-Benutzerlogin und das Passwort). |
[pgbouncer] Abschnitt | Geben Sie IP-Adressen an, die vom PgBouncer-Daemon abgehört werden sollen. Verwenden Sie Listen_addr = *, um alle verfügbaren Adressen abzuhören. |
auth_file | PgBouncer ist kein Bestandteil von PostgreSQL, daher müssen Sie die Liste der Benutzer mit verschlüsselten Passwörtern bereitstellen, die zum Herstellen einer Verbindung zu PgBouncer erforderlich sind. Auth_file ist ein Verzeichnispfad zu der Datei, die Benutzernamen und Passwörter enthält. |
auth_type | (md5 | crypt | plain | trust | any) Md5 ist ein Argument zur Verwendung von Passwörtern, die im auth_file angegeben sind. Md5 ist standardmäßig eingestellt. |
max_client_conn | Die maximale Anzahl von Clients, die eine Verbindung zum Pool herstellen können (Standardwert: 100). |
admin_users | Zuweisung von Berechtigungen mit Zugriff auf die Administratorkonsole. |
default_pool_size | Festlegung der maximalen Anzahl von Serververbindungen pro Benutzer/Datenbank-Kombination. |
reserve_pool_size | Die maximale Anzahl zusätzlicher Verbindungen, die im Falle eines Problems erlaubt sind. |
pool_mode | Definiert den Pooling-Modus: (session) PgBouncer weist dem Client eine Serververbindung zu. Wenn die Client-Anwendung die Verbindung trennt, wird die Verbindung wieder in den Pool zurückgegeben. (transaction) PgBouncer weist der Client-Anwendung eine Serververbindung zu, bis die Transaktion abgeschlossen ist. (statement) PgBouncer weist der Client-Anwendung für jede Anweisung eine Serververbindung zu. |
Wie Sie sehen können, bietet PgBouncer eine einfache Lösung zur Verwaltung von Verbindungspools, insbesondere im Umgang mit einer Multi-Threaded-Architektur. Durch die Nutzung bestehender Verbindungen beseitigt PgBouncer die Notwendigkeit, für jeden Client eine Datenbankverbindung zu erstellen.
Unsere Entwickler haben die Zuordnungsschemata von PgBouncer gründlich analysiert und die DataSunrise Database Security Suite so konfiguriert, dass sie in vollem Umfang mit diesem Verbindungs-Pooler funktioniert.