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.