sql >> Database >  >> RDS >> PostgreSQL

Hoe de maximale verbindingen in postgre te verhogen?

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

1. Verhoog 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 .

2. Wijzig kernel.shmmax

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



  1. Een DB-koppeling maken tussen twee Oracle-instanties

  2. Alles selecteren voor/na een bepaald teken in MySQL - SUBSTRING_INDEX()

  3. Tel het aantal voorkomens van een string in een VARCHAR-veld?

  4. Hoe de telling van de huidige maand zondagen in psql te krijgen?