Troppe connessioni inattive potrebbero influire sulle prestazioni di PostgreSQL 9.2?


8

Alcune domande sul mio server di database sembrano impiegare molto tempo a rispondere e credo che l'utilizzo della CPU sia elevato. Durante l'esecuzione ps aux, vedo ~ 250 connessioni "inattive" (che credo siano troppe). Non ho iniziato a fare una diagnosi completa, ma volevo sapere se questo è un buon posto per iniziare a cercare.

Sto anche usando PgBouncer con il pooling a livello di transazione. Sospetto di poter facilmente ridurre il numero di idleconnessioni ottimizzando le dimensioni del pool. Tuttavia, non voglio iniziare a fare troppi cambiamenti a meno che non ci sia una buona ragione per farlo.

Molte idleconnessioni in PostgreSQL 9.2 possono influire sulle prestazioni?

Grazie mille!


cosa significa "troppe connessioni inattive"? dozzine? centinaia?
jap1968,

Domanda modificata. Grazie per averlo segnalato. Giusto per chiarire, l'ultimo conteggio era ~ 250
Juan Carlos Coto il

Può essere? So che il DBA Oracle qui ha chiesto alle persone di impostare i loro strumenti di sviluppo in modo da utilizzare una singola sessione per tutte le finestre (anziché una nuova sessione per ogni finestra) quando il database di sviluppo ha iniziato a funzionare molto lentamente. Il numero esatto che conta come "troppi" probabilmente dipenderà dalle risorse disponibili per il tuo database.
FrustratedWithFormsDesigner,

Risposte:


3

Dubito seriamente che le connessioni inattive siano il tuo problema. PostgreSQL è in grado di gestire sessioni inattive poiché non richiedono quasi risorse. Le sessioni attive d'altra parte sono molto più probabili la causa della lentezza.

Vedi https://wiki.postgresql.org/wiki/Number_Of_Database_Connections per riferimento sul numero di connessioni al database.


Le sessioni inattive con transazioni non impegnate sono spesso colpevoli!
Philᵀᴹ

Sono d'accordo, Phil, anche se in realtà non si tratta di PostgreSQL - si tratta più di come viene scritta la fine del client (a meno che non mi manchi qualcosa).
Max Vernon,

Si prega di consultare una domanda correlata al riguardo . Sarebbe davvero d'aiuto se ci provassi. Grazie!
Juan Carlos Coto,

In realtà le connessioni inattive hanno un sacco di overhead (di memoria) e dovrebbero essere evitate (penso che alloca circa 10 MB per connessione, quindi nel tuo caso sprecheresti almeno 2,5 GB di memoria)
Kedare

1
@MaxVernon - nel mio server postgresql 9.5 in esecuzione, ho 25 processi inattivi, per la colonna RES, ea. il processo è in media circa 12 MB (intervallo: 4,5 MB - 584 MB, sospetto che quelli più grandi abbiano tx senza impegno).
cerd
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.