PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come aumentare le connessioni massime in postgres?

Sto solo aumentando max_connections è una cattiva idea. Devi aumentare shared_buffers e kernel.shmmax anche.

Considerazioni

max_connections determina il numero massimo di connessioni simultanee al server di 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 aumentato.

Ogni connessione PostgreSQL consuma RAM per la gestione della connessione o per 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 richiede un numero elevato 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 e shared_buffers

in /var/lib/pgsql/{version_number}/data/postgresql.conf

cambia

max_connections = 100
shared_buffers = 24MB

a

max_connections = 300
shared_buffers = 80MB

I shared_buffers parametro di configurazione determina la quantità di memoria è dedicato a PostgreSQL da utilizzare per memorizzare i dati nella cache .

  • 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 ti accorgerai di utilizzare più del 40% della RAM per funzionare meglio di una quantità inferiore (come il 25%)
  • Tieni presente che se il tuo sistema o la build di PostgreSQL è a 32 bit, potrebbe non essere pratico impostare shared_buffers sopra 2 ~ 2,5 GB.
  • Nota che su Windows, valori elevati per shared_buffers non sono così efficaci e potresti trovare risultati migliori mantenendolo relativamente basso e utilizzando invece di più la cache del sistema operativo. Su Windows l'intervallo utile va da 64 MB a 512 MB .

2. Cambia kernel.shmmax

Dovresti aumentare la dimensione massima del segmento del kernel per essere leggermente più grande rispetto a shared_buffers .

Nel file /etc/sysctl.conf impostare il parametro come mostrato di seguito. Entrerà in vigore quando postgresql riavvii (la riga seguente rende il kernel massimo a 96Mb )

kernel.shmmax=100663296

Riferimenti

Connessioni Postgres Max e buffer condivisi

Ottimizzazione del tuo server PostgreSQL