Könnten zu viele inaktive Verbindungen die Leistung von PostgreSQL 9.2 beeinträchtigen?

8

Einige Anfragen auf meinem Datenbankserver scheinen lange zu dauern, und ich glaube, dass die CPU-Auslastung hoch ist. Beim Laufen ps auxsehe ich ~ 250 "Leerlauf" -Verbindungen (von denen ich glaube, dass sie zu viele sind). Ich habe noch keine vollständige Diagnose gestellt, wollte aber wissen, ob dies ein guter Ort ist, um mit der Suche zu beginnen.

Ich verwende auch PgBouncer mit Pooling auf Transaktionsebene. Ich vermute, dass ich die Anzahl der idleVerbindungen leicht reduzieren kann, indem ich die Poolgröße optimiere. Ich möchte jedoch nicht zu viele Änderungen vornehmen, es sei denn, es gibt einen guten Grund dafür.

Können viele idleVerbindungen in PostgreSQL 9.2 die Leistung beeinträchtigen?

Vielen Dank!

Juan Carlos Coto
quelle
Was bedeutet "zu viele Leerlaufverbindungen"? Dutzende? Hunderte?
jap1968
Bearbeitete Frage. Vielen Dank für den Hinweis. Nur um es klar zu machen, war die letzte Zählung ~ 250
Juan Carlos Coto
Vielleicht? Ich weiß, dass der Oracle-DBA hier die Benutzer gebeten hat, ihre Entwicklungstools so einzustellen, dass eine einzige Sitzung für alle Fenster verwendet wird (anstelle einer neuen Sitzung für jedes Fenster), als die Entwicklungsdatenbank sehr langsam lief. Die genaue Anzahl, die als "zu viele" zählt, hängt wahrscheinlich von den Ressourcen ab, die Ihrer Datenbank zur Verfügung stehen.
FrustratedWithFormsDesigner

Antworten:

3

Ich bezweifle ernsthaft, dass Leerlaufverbindungen Ihr Problem sind. PostgreSQL ist sehr gut in der Lage, inaktive Sitzungen zu verarbeiten, da sie fast keine Ressourcen beanspruchen. Aktive Sitzungen hingegen sind viel wahrscheinlicher die Ursache für Langsamkeit.

Informationen zur Anzahl der Datenbankverbindungen finden Sie unter https://wiki.postgresql.org/wiki/Number_Of_Database_Connections .

Max Vernon
quelle
Inaktive Sitzungen mit nicht festgeschriebenen Transaktionen sind oft ungezogene Schuldige!
Philᵀᴹ
Ich stimme zu, Phil, obwohl es wirklich nicht um PostgreSQL geht - es geht eher darum, wie das Client-Ende geschrieben wird (es sei denn, ich vermisse etwas).
Max Vernon
Bitte sehen Sie eine verwandte Frage dazu . Es würde wirklich helfen, wenn Sie sich darauf einlassen würden. Vielen Dank!
Juan Carlos Coto
Tatsächlich haben inaktive Verbindungen viel (Speicher-) Overhead und sollten vermieden werden (ich denke, es werden ungefähr 10 MB pro Verbindung zugewiesen, sodass Sie in Ihrem Fall mindestens 2,5 GB Speicher verschwenden würden)
Kedare
1
@MaxVernon - In meinem laufenden Postgresql 9.5-Server habe ich 25 inaktive Prozesse für die RES-Spalte, z. Prozess ist im Durchschnitt etwa 12 MB (Bereich: 4,5 MB - 584 MB, ich vermute, die größeren haben nicht festgeschrieben tx).
Cerd