Unabhängiger Vergleich · keine bezahlten Platzierungen
Startseite / Blog / Technik / Verbindungspool: Abhilfe bei Spitzen, die die Datenbank überlasten können

Verbindungspool: Abhilfe bei Spitzen, die die Datenbank überlasten können

PgBouncer und der PHP-Pool reduzieren offene Verbindungen – sind aber schlecht dimensioniert und lassen die App vor einer bereits überlasteten Datenbank warten.

Redaktion Hébergeurs.eu 4 Min. Aktualisiert 19 Juli 2026

Traffic-Spitze: Zweihundert aktive PHP-FPM-Prozesse, jeder öffnet eine neue Verbindung zur Datenbank. PostgreSQL erreicht sein Limit von einhundert Verbindungen – zu viele Verbindungen. Panik: Wir erhöhen das Limit auf fünfhundert. Der Datenbankspeicher explodiert, das System schaltet auf Festplatte um, die Leistung verschlechtert sich.

PgBouncer kommt: zweihundert Anwendungsclients, dreißig echte PostgreSQL-Verbindungen. Die Krise schien gelöst – bis dreißig gleichzeitige langsame Anfragen den gesamten Pool für dreißig Sekunden blockierten. Der Antrag läuft massenhaft ab. Der Pool hat die Verbindungsobergrenze ausgeblendet, nicht die Gleichzeitige Verarbeitungskapazität der Datenbank.

Verbindungspooling beseitigt offene Kosten. Es löst keine vollständigen Tabellenscans auf. Schlecht angepasst fügt es eine unsichtbare Warteschlange vor einer bereits erstickten Basis hinzu.

Wo soll der Pool im Stapel platziert werden?

Abhängig von Ihrer Umgebung ändert sich das Tool. Das Prinzip bleibt dasselbe: eine Schicht zwischen den Anwendungsprozessen und der Basis.

StapelGemeinsames Werkzeug
PHP / Python / Node → PostgreSQLPgBouncer vor PostgreSQL
MySQLProxySQL, MariaDB MaxScale oder Anwendungspool
Serverlose FunktionenObligatorischer Pooler (verwalteter Proxy)
PHP ohne PoolerDauerhafte Verbindungen – Risiko von Zombie-Verbindungen

Typische Architektur:


[PHP-FPM × N] → [PgBouncer:6432] → [PostgreSQL:5432]

**Verdoppeln Sie die Anwendung und den PgBouncer nicht, ohne die Kette zu verstehen – verschachtelte Pools erzeugen Latenz und Deadlocks.

Dimensionierung: Beginnen Sie mit der Basis, nicht mit der Anwendung

Für PostgreSQL wird die optimale Anzahl aktiver Verbindungen unter realer Last gemessen – nicht in einer theoretischen Tabelle. In der Praxis ist für ein KMU oft eine „default_pool_size“ zwischen zwanzig und fünfzig ausreichend; „max_client_conn“ muss die Summe der Anwendungsprozesse abdecken.

SymptomWahrscheinliche Ursache
Dateipool-ZeitüberschreitungPool zu klein oder Abfragen zu lang
Niedriger Basisprozessor, App-TimeoutsDurch Sperren blockierte Abfragen
„Zu viele Verbindungen“Pool-Bypass oder Fehlkonfiguration

Transaktionsmodus: Vorteile und Fallstricke

Beim Transaktionspooling wird die PostgreSQL-Verbindung nach der Validierung wiederverwendet. Verwenden Sie diesen Modus nicht mit sitzungsgebundenen vorbereiteten Abfragen, dauerhaften Sitzungsvariablen oder Funktionen wie Abhören und Benachrichtigung. Der Sitzungsmodus ist sicherer zu migrieren. Transaktionsmodus nach Prüfung Ihrer Datenzugriffsschicht.

Beim MySQL-Shared-Hosting sind die Verbindungen oft auf zehn oder dreißig beschränkt: Ein anwendungsseitiger Pool ist obligatorisch. In verwaltetem PostgreSQL ist manchmal ein Pooler enthalten – überprüfen Sie Ihre Angebotsgrenzen und messen Sie die Warteschlange, bevor Sie die Hardware skalieren.

In der Praxis verschwinden die meisten „Pool“-Vorfälle nach der Optimierung langsamer Abfragen: fehlende Indizes, ungefilterte Joins, zu lange Transaktionen. Der Pool wird dann zu einem nützlichen Stoßdämpfer und nicht zu einer gläsernen Decke.

Der Gipfel: Der Pool verschiebt die Sättigung

Korrekturreihenfolge: langsame AbfragenPoolBasisskala. Wenn Sie die Bestellung umkehren, müssen Sie für das gleiche Ergebnis mehr Warteschlange und Hardware bezahlen.

Entscheide dich und gehe ohne blinden Fleck voran

Messen Sie die Anzahl der PostgreSQL- oder MySQL-Verbindungen zum aktuellen Spitzenwert vor jeglichen Änderungen. Stellen Sie PgBouncer oder ProxySQL bereit, wenn Ihre Anwendungsprozesse einen sicheren „max_connections“ deutlich überschreiten. Legen Sie die Poolgröße basierend auf der tatsächlichen Kapazität der Datenbank fest, nicht auf der Anzahl der Worker. Überwachen wartende Kunden und durchschnittliche Wartezeit. Analysieren Sie die schwersten Abfragen parallel – siehe EXPLAIN PostgreSQL und PHP-FPM-Sättigung.

Häufig gestellte Fragen

Warum PostgreSQL bündeln?

Jede Verbindung verbraucht Speicher; Der Pool multiplext Hunderte von Anwendungsprozessen über weniger Serververbindungen.

Sitzung vs. Transaktionsmodus PgBouncer?

Der Transaktionsmodus ist effizienter; Der Sitzungsmodus bleibt besser mit objektrelationalen Mapping-Tools kompatibel.

Wie dimensioniere ich pool_size?

Beginnen Sie mit der Basisprozessorkapazität und messen Sie sie unter realer Auslastung, nicht anhand der Anzahl der Anwendungsarbeiter.

Überschreibt der Pool den SQL-Index?

Nein – langsame Abfragen bleiben langsam, sobald eine Verbindung hergestellt ist. Optimieren Sie zuerst die Abfragen.


Der Verbindungspool kümmert sich um die Öffnung – nicht um die Abfrage, die die Datenbank verstopft, sobald die Verbindung hergestellt ist.

Europäische Hoster vergleichen

Filtern nach Compliance, Standort und Einsatzzweck — dann die Datenblätter öffnen, um den echten Umfang zu prüfen.

Verzeichnis durchsuchen
Blog

Weiterlesen

Alle Artikel →