GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie berechnet man max_connections für PostgreSQL und default_pool_size für pgbouncer?

Bitte lesen Sie zunächst unsere kanonische Frage zur Kapazitätsplanung.

Zweitens sehen Sie das falsch.
Die Menge an Arbeitsspeicher (oder einer anderen Ressource), die Sie haben, diktiert nicht die Anzahl der Verbindungen, die Sie festlegen, die Anzahl der Verbindungen, die Sie benötigen bestimmt, wie kräftig ein Server ist, den Sie kaufen müssen.
Die Ressourcenanforderungen pro Verbindung sind im Handbuch sehr detailliert angegeben und werden in dem von Ihnen verlinkten Wiki besprochen. Finden Sie heraus, was Ihre Umgebung benötigt (oder machen Sie eine fundierte Vermutung) und stellen Sie sicher, dass die Hardware, auf der Sie laufen werden, mit dem umgehen kann, was Sie darauf werfen werden.

Insbesondere in Bezug auf Verbindungsbeschränkungen und 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 sie Benutzer hat.

Die Standardwerte für Postgres und pgbouncer sind als Standardwerte sinnvoll :

  • 100 Datenbankverbindungen sind viel für die typische Person, die Postgres in eine Umgebung wirft.
    Entwickler werden wahrscheinlich nicht mehr als 10 benötigen. Jeder andere wird genug wissen, um die Zahl zu erhöhen.

  • 20 Verbindungen von pgbouncer pro DB-Pool bedeutet, dass Sie 4 Pools erhalten können, die auf einen Server zeigen, ohne das standardmäßige Postgres-Verbindungslimit zu überschreiten.
    Es ist möglich, mehrere gepoolte Ressourcen in pgbouncer zu haben auf eine Back-End-Datenbank zeigen, und Sie möchten immer einige verfügbare Verbindungen auf Ihren Back-End-Servern.

Wenn die Standards nicht für Ihre Umgebung geeignet sind, sollten Sie sie ändern.

Denken Sie daran, dass gepoolte Verbindungen nicht bedeuten, „immer alle verfügbaren Datenbankverbindungen zu binden“.
Der Punkt von pgbouncer wie Sie angemerkt haben, ist die Wiederverwendung Verbindungen. Der Effizienzgewinn hier erfordert nicht, dass Sie jede verfügbare Verbindung binden, sondern lediglich, dass Sie nicht jedes Mal trennen, neu verbinden, SSL neu aushandeln, sich erneut bei der Datenbank authentifizieren und Ihre Verbindungsaufbauabfragen jedes Mal neu ausführen.


Linux
  1. Wie ich Ansible und Anacron für die Automatisierung verwende

  2. So installieren und sichern Sie PostgreSQL Server auf RockyLinux 8

  3. Aktivieren Sie SSL und Remoteverbindungen für MySQL

  4. Wie überwacht man cwnd- und ssthresh-Werte für eine TCP-Verbindung?

  5. Wie man shmall, shmmax, shmmin usw. einstellt ... im Allgemeinen und für Postgresql

So sichern und wiederherstellen Sie eine SD-Karte für Raspberry Pi

So installieren und verwenden Sie XRDP unter Ubuntu für Remotedesktopverbindungen

So fügen Sie Icinga Director für Icinga2 und Icinga Web 2 hinzu.

So installieren Sie die PostgreSQL-Datenbank und pgAdmin unter Linux

Erste Schritte und Installation von Wine für Ubuntu

So installieren und konfigurieren Sie das Windows-Subsystem für Linux