Solo aumentare max_connections
è una cattiva idea. Devi aumentare anche shared_buffers
e kernel.shmmax
.
considerazioni
max_connections
determina il numero massimo di connessioni simultanee al server database. L'impostazione predefinita è in genere 100 connessioni.
Prima di aumentare il numero di connessioni, potrebbe essere necessario aumentare la distribuzione. Ma prima, dovresti considerare se hai davvero bisogno di un limite di connessione maggiore.
Ogni connessione PostgreSQL consuma RAM per gestire la connessione o il client che la utilizza. Più connessioni hai, più RAM utilizzerai che potrebbe invece essere utilizzata per eseguire il database.
Un'app ben scritta in genere non richiede un numero elevato di connessioni. Se hai un'app che necessita di un gran numero di connessioni, considera l'utilizzo di uno strumento come pg_bouncer che può raggruppare le connessioni per te. Poiché ogni connessione consuma RAM, dovresti cercare di ridurre al minimo il loro utilizzo.
Come aumentare le connessioni massime
1. Aumenta max_connection
eshared_buffers
nel /var/lib/pgsql/{version_number}/data/postgresql.conf
modificare
max_connections = 100
shared_buffers = 24MB
per
max_connections = 300
shared_buffers = 80MB
Il shared_buffers
parametro di configurazione determina la quantità di memoria è dedicata a PostgreSQL da utilizzare per la memorizzazione nella cache di dati .
- Se hai un sistema con 1 GB o più di RAM, un valore iniziale ragionevole per shared_buffers è 1/4 della memoria del tuo sistema.
- è improbabile che troverai l'utilizzo di più del 40% della RAM per funzionare meglio di una quantità minore (come il 25%)
- Tieni presente che se il tuo sistema o la build di PostgreSQL è a 32 bit, potrebbe non essere pratico impostare shared_buffer sopra 2 ~ 2,5 GB.
- Nota che su Windows, i valori grandi per shared_buffer non sono altrettanto efficaci e potresti trovare risultati migliori mantenendolo relativamente basso e utilizzando invece di più la cache del sistema operativo. Su Windows l' intervallo utile è compreso tra 64 MB e 512 MB .
2. Modificare kernel.shmmax
Dovresti aumentare la dimensione massima del segmento del kernel in modo che sia leggermente più
grande del file shared_buffers
.
Nel file /etc/sysctl.conf
impostare il parametro come mostrato di seguito. Avrà effetto al postgresql
riavvio (la riga seguente rende il kernel al massimo 96Mb
)
kernel.shmmax=100663296
Riferimenti
Connessioni Postgres Max e Buffer Condivisi
Ottimizzazione del server PostgreSQL