PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie kann man die maximalen Verbindungen in Postgres erhöhen?

Einfach max_connections erhöhen ist schlechte idee. Sie müssen shared_buffers erhöhen und kernel.shmmax auch.

Überlegungen

max_connections legt die maximale Anzahl gleichzeitiger Verbindungen zum Datenbankserver fest. Der Standardwert ist normalerweise 100 Verbindungen.

Bevor Sie die Anzahl Ihrer Verbindungen erhöhen, müssen Sie möglicherweise Ihre Bereitstellung skalieren. Aber vorher sollten Sie überlegen, ob Sie wirklich ein erhöhtes Verbindungslimit benötigen.

Jede PostgreSQL-Verbindung verbraucht RAM für die Verwaltung der Verbindung oder des Clients, der sie verwendet. Je mehr Verbindungen Sie haben, desto mehr RAM verwenden Sie, das stattdessen zum Ausführen der Datenbank verwendet werden könnte.

Eine gut geschriebene App benötigt normalerweise keine große Anzahl von Verbindungen. Wenn Sie eine App haben, die eine große Anzahl von Verbindungen benötigt, sollten Sie ein Tool wie pg_bouncer verwenden, das Verbindungen für Sie bündeln kann. Da jede Verbindung RAM verbraucht, sollten Sie versuchen, deren Nutzung zu minimieren.

So erhöhen Sie die maximale Anzahl an Verbindungen

1. Erhöhen Sie max_connection und shared_buffers

in /var/lib/pgsql/{version_number}/data/postgresql.conf

ändern

max_connections = 100
shared_buffers = 24MB

zu

max_connections = 300
shared_buffers = 80MB

Die shared_buffers Konfigurationsparameter bestimmt, wie viel Speicher ist engagiert an PostgreSQL zur Verwendung zum Zwischenspeichern von Daten .

  • Wenn Sie ein System mit 1 GB oder mehr RAM haben, ist ein vernünftiger Startwert für shared_buffers 1/4 des Speichers in Ihrem System.
  • Es ist unwahrscheinlich, dass Sie feststellen werden, dass die Verwendung von mehr als 40 % des Arbeitsspeichers besser funktioniert als eine geringere Menge (z. B. 25 %)
  • Beachten Sie, dass es bei einem 32-Bit-System oder PostgreSQL-Build möglicherweise nicht praktikabel ist, shared_buffers auf mehr als 2 bis 2,5 GB festzulegen.
  • Beachten Sie, dass unter Windows große Werte für shared_buffers nicht so effektiv sind und Sie möglicherweise bessere Ergebnisse erzielen, wenn Sie sie relativ niedrig halten und stattdessen mehr den Betriebssystem-Cache verwenden. Unter Windows liegt der nützliche Bereich zwischen 64 MB und 512 MB .

2. Kernel.shmmax ändern

Sie müssten die max. Segmentgröße des Kernels auf etwas größer erhöhen als die shared_buffers .

In der Datei /etc/sysctl.conf Stellen Sie die Parameter wie unten gezeigt ein. Es wird wirksam, wenn postgresql reboots (Die folgende Zeile bringt den Kernel auf 96Mb )

kernel.shmmax=100663296

Referenzen

Maximale Postgres-Verbindungen und gemeinsam genutzte Puffer

Optimieren Ihres PostgreSQL-Servers