Gerade zunehmende max_connections
schlechte Idee. Sie müssen auch shared_buffers
und kernel.shmmax
erhöhen.
Überlegungen
max_connections
bestimmt die maximale Anzahl gleichzeitiger Verbindungen zum Datenbankserver. Der Standardwert ist normalerweise 100 Verbindungen.
Bevor Sie die Anzahl der 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 benötigt RAM zum Verwalten der Verbindung oder des Clients, der sie verwendet. Je mehr Verbindungen Sie haben, desto mehr RAM wird verwendet, um die Datenbank auszuführen.
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, ihre Verwendung zu minimieren.
Wie max Verbindungen erhöhen
1. Erhöhung max_connection
und shared_buffers
in /var/lib/pgsql/data/postgresql.conf
Änderung
max_connections = 100
shared_buffers = 24MB
zu
max_connections = 300
shared_buffers = 80MB
Der shared_buffers
Konfigurationsparameter bestimmt, wie viel Speicher zu PostgreSQL gewidmet ist für Caching von Daten zu verwenden.
- Wenn Sie ein System mit 1 GB RAM oder mehr haben, ein vernünftiger Ausgang Wert für shared_buffers ist 1/4 des Speichers in Ihrem System.
- es ist unwahrscheinlich, dass Sie mit mehr als 40% des RAM finden, um besser zu arbeiten als eine kleinere Menge (wie 25%)
- Beachten Sie, dass, wenn Ihr System oder PostgreSQL Build ist 32-bit, es könnte nicht praktisch sein, shared_buffers über 2 ~ 2,5 GB zu setzen.
- Beachten Sie, dass unter Windows, große Werte für shared_buffers sind nicht als wirksam, und Sie können bessere Ergebnisse finden, halten es relativ niedrig und mit dem Betriebssystem-Cache mehr statt. Unter Windows ist der nützliche Bereich 64 MB bis 512 MB.
2. Ändern kernel.shmmax
Sie müssten Kernel max Segmentgröße zu erhöhen, leicht zu sein größer als die shared_buffers
.
In der Datei /etc/sysctl.conf
den Parameter wie unten gezeigt einstellen. Es wird wirksam, wenn postgresql
Neustarts
kernel.shmmax=100663296
Referenzen
How to increase max connections in postgres
Postgres Max Connections And Shared Buffers
Tuning Your PostgreSQL Server
(Die folgende Zeile den Kernel max 96Mb
macht)
http://stackoverflow.com/questions/9798705/arval-sqlexception-fatal-sorry-too-many-clients-already-in-postgres –
Verwenden Sie einen Verbindungspool wie pgBouncer oder pgPool –
1. Überprüfen Sie zuerst, ob Ihre Middleware hält nicht zu viele Verbindungen offen oder gibt sie aus. 2. (Vielleicht) benutze als nächstes einen Verbindungspooler. 3. (fast) nie die Anzahl der zulässigen Verbindungen bei dieser Art von Problem zu erhöhen, in den meisten Fällen wird dies die Dinge noch schlimmer machen. (außer wenn Sie absolut sicher sind) – joop