Zuerst bitte unsere kanonische Frage auf Kapazitätsplanung lesen .
Der spezifische Rat, um den Sie bitten, ist ein Rat für die Kapazitätsplanung, den Sie für Ihre spezielle Umgebung selbst erarbeiten müssen.
Zweitens sehen Sie das falsch.
Die Größe des Speichers (oder eine andere Ressource) Sie haben nicht die Anzahl der Verbindungen diktieren Sie einstellen, die Anzahl der Verbindungen , die Sie benötigen diktiert , wie bullige einem Server , den Sie kaufen müssen.
Die Ressourcenanforderungen pro Verbindung werden im Handbuch ausführlich beschrieben und in dem Wiki erläutert, mit dem Sie verlinkt haben. Finden Sie heraus, was Ihre Umgebung benötigt (oder machen Sie eine Vermutung), und stellen Sie sicher, dass die Hardware, auf der Sie laufen werden, mit dem umgehen kann, was Sie darauf werfen werden.
Insbesondere bezüglich der Verbindungsbeschränkungen und der Poolgröße sollten Sie "genügend" Verbindungen haben, um die Anforderungen Ihrer Anwendung zu erfüllen - entweder auf einem einzelnen Server oder über einen Pool / Bouncer.
"Genug" ist eine relative Zahl: Eine Anwendung, die eine Verbindung herstellt (und ständig wiederverwendet), benötigt nur eine Verbindung. Eine Anwendung, die eine Verbindung für jeden Endbenutzer herstellt, der sich anmeldet, benötigt so viele DB-Verbindungen wie Benutzer.
Die Standardwerte für beide Postgres und pgbouncer
sinnvoll sind als Standardwerte :
100 Datenbankverbindungen sind eine Menge für die typische Person, die Postgres in eine Umgebung wirft.
Entwickler werden wahrscheinlich nicht mehr als 10 brauchen. Jeder andere wird genug wissen, um die Anzahl zu erhöhen.
20 Verbindungen pgbouncer
pro DB-Pool bedeuten, dass Sie 4 Pools erhalten können, die auf einen Server zeigen, und das Standard-Postgres-Verbindungslimit nicht überschreiten.
Es ist möglich, dass mehrere Poolressourcen pgbouncer
auf eine Back-End-Datenbank verweisen, und Sie möchten immer einige verfügbare Verbindungen auf Ihren Back-End-Servern.
Wenn die Standardeinstellungen nicht für Ihre Umgebung geeignet sind, müssen Sie sie ändern.
Denken Sie daran, dass gepoolte Verbindungen nicht "immer alle verfügbaren Datenbankverbindungen herstellen" bedeuten.
Der Punkt von, pgbouncer
wie Sie bemerkt haben, ist, Verbindungen wiederzuverwenden . Der Effizienzgewinn erfordert hier nicht, dass Sie jede verfügbare Verbindung binden, sondern nur, dass Sie nicht jedes Mal die Verbindung trennen, erneut herstellen, SSL neu aushandeln, sich erneut bei der Datenbank authentifizieren und Ihre Verbindungs-Setup-Abfragen erneut ausführen.
Beachten Sie die Definition der Dokumentation von
default_pool_size
Wenn die Standardkonfiguration also eine Poolgröße von 20 von insgesamt 100 Verbindungen ist, bedeutet dies, dass 5 verschiedene Benutzer- / Datenbankpaare ihre Poolgröße jeweils maximieren müssen, bevor sie das Gesamtlimit erreichen. Wenn Sie zum Beispiel pgbouncer verwenden, um über einen einzelnen Benutzer zu einer einzelnen Datenbank zu routen, liegt das effektive Verbindungslimit bei 20 und nicht bei 100. Daher müssen Sie die Poolgröße für diesen Anwendungsfall entsprechend festlegen. YMMV.
quelle