Bare at øge max_connections
er en dårlig idé. Du skal øge shared_buffers
og kernel.shmmax
også.
Overvejelser
max_connections
bestemmer det maksimale antal samtidige forbindelser til databaseserveren. Standarden er typisk 100 forbindelser.
Før du øger antallet af forbindelser, skal du muligvis skalere din implementering op. Men inden da bør du overveje, om du virkelig har brug for en øget forbindelsesgrænse.
Hver PostgreSQL-forbindelse bruger RAM til at administrere forbindelsen eller klienten, der bruger den. Jo flere forbindelser du har, jo mere RAM vil du bruge, som i stedet kan bruges til at køre databasen.
En velskrevet app behøver typisk ikke et stort antal forbindelser. Hvis du har en app, der har brug for et stort antal forbindelser, så overvej at bruge et værktøj såsom pg_bouncer, som kan samle forbindelser for dig. Da hver forbindelse bruger RAM, bør du søge at minimere deres brug.
Sådan øger du det maksimale antal forbindelser
1. Forøg max_connection
og shared_buffers
i /var/lib/pgsql/{version_number}/data/postgresql.conf
ændre
max_connections = 100
shared_buffers = 24MB
til
max_connections = 300
shared_buffers = 80MB
shared_buffers
konfigurationsparameter bestemmer, hvor meget hukommelse er dedikeret til PostgreSQL for at bruge til caching af data .
- Hvis du har et system med 1 GB eller mere RAM, er en rimelig startværdi for shared_buffers 1/4 af hukommelsen i dit system.
- det er usandsynligt, at du vil finde at bruge mere end 40 % af RAM til at fungere bedre end en mindre mængde (f.eks. 25 %)
- Vær opmærksom på, at hvis dit system eller PostgreSQL-build er 32-bit, er det måske ikke praktisk at indstille shared_buffers over 2 ~ 2,5 GB.
- Bemærk, at på Windows er store værdier for shared_buffers ikke så effektive, og du kan finde bedre resultater ved at holde den relativt lav og bruge OS-cachen mere i stedet. På Windows er det nyttige område 64 MB til 512 MB .
2. Skift kernel.shmmax
Du skal øge kernel max segmentstørrelse for at være lidt større end shared_buffers
.
I filen /etc/sysctl.conf
indstille parameteren som vist nedenfor. Det træder i kraft, når postgresql
genstarter (Den følgende linje gør kernen max til 96Mb
)
kernel.shmmax=100663296
Referencer
Postgres Max-forbindelser og delte buffere
Tuning af din PostgreSQL-server