Gewoon max_connections
verhogen is een slecht idee. U moet shared_buffers
verhogen en kernel.shmmax
ook.
Overwegingen
max_connections
bepaalt het maximum aantal gelijktijdige verbindingen met de databaseserver. De standaard is meestal 100 verbindingen.
Voordat u het aantal verbindingen verhoogt, moet u mogelijk uw implementatie opschalen. Maar eerst moet je overwegen of je echt een verhoogde verbindingslimiet nodig hebt.
Elke PostgreSQL-verbinding verbruikt RAM voor het beheren van de verbinding of de client die deze gebruikt. Hoe meer verbindingen u heeft, hoe meer RAM u zult gebruiken dat in plaats daarvan kan worden gebruikt om de database uit te voeren.
Een goed geschreven app heeft meestal geen groot aantal verbindingen nodig. Als je een app hebt die een groot aantal verbindingen nodig heeft, overweeg dan om een tool zoals pg_bouncer te gebruiken die verbindingen voor je kan bundelen. Aangezien elke verbinding RAM verbruikt, moet u proberen het gebruik ervan te minimaliseren.
Hoe u het maximale aantal verbindingen kunt verhogen
max_connection
en shared_buffers
in /var/lib/pgsql/{version_number}/data/postgresql.conf
wijzigen
max_connections = 100
shared_buffers = 24MB
naar
max_connections = 300
shared_buffers = 80MB
De shared_buffers
configuratieparameter bepaalt hoeveel geheugen is toegewijd naar PostgreSQL om te gebruiken voor cachinggegevens .
- Als je een systeem hebt met 1 GB of meer RAM, is een redelijke startwaarde voor shared_buffers 1/4 van het geheugen in je systeem.
- het is onwaarschijnlijk dat u meer dan 40% RAM gebruikt om beter te werken dan een kleinere hoeveelheid (zoals 25%)
- Houd er rekening mee dat als uw systeem of PostgreSQL-build 32-bits is, het misschien niet praktisch is om shared_buffers boven 2 ~ 2,5 GB in te stellen.
- Houd er rekening mee dat in Windows grote waarden voor shared_buffers niet zo effectief zijn, en dat je betere resultaten kunt vinden door deze relatief laag te houden en in plaats daarvan meer de OS-cache te gebruiken. Op Windows is het nuttige bereik 64 MB tot 512 MB .
U zou de maximale segmentgrootte van de kernel moeten vergroten om iets groter te zijn dan de shared_buffers
.
In bestand /etc/sysctl.conf
stel de parameter in zoals hieronder getoond. Het wordt van kracht wanneer postgresql
reboots (De volgende regel maakt de kernel max tot 96Mb
)
kernel.shmmax=100663296
Referenties
Postgres Max-verbindingen en gedeelde buffers
Uw PostgreSQL-server afstemmen