max_Connection Limitieren

Hallo,

ich habe ein Resourcenschwaches System. 1 CPU, 1.6 GB Ram und eine SSD Festplatte.
Es sieht so aus, als ob die Anzahl von postgres.exe die Gesamtperformance des Systems stark beeinflusst. Ab 50 dieser Verbindungen (jede belegt ca 7MB Ram) ist die CPU 100% ausgelastet. Momentan wird max_Connections noch nicht verwendet. Ich überlege diese auf 30 zu beschränken.
Ich habe mir einmal die Datenbank hiermit angesehen:

select * from pg_stat_activity;

Es sieht so aus, als ob alte Verbindungen manchmal aufgehoben werden. Wenn ich meine Software starte, erscheinen 5 neue Verbindungen. Nach dem Schließen bleiben scheinbar manchmal Verbindungen im TaskManager bestehen.

Laufe ich Gefahr mit dieser Einstellung Connection Refused zu bekommen? Wenn z.B. 27 Verbindungen offen sind, davon aber 5 nicht verwendet werden, kann postgreSQL dann bei dem Start der Software, die 5 Verbindungen benötigt, diese anlegen? Also alte Verbindungen wiederverwenden? Ansonsten gäbe es ja nur 3 und zwei würden abgelehnt werden.

Kann ich irgendwo sehen, was die Verbindungen machen und ob sie in einem Zustand sind, dass sie wiederverwendet werden können?

Ich suche noch nach einem Grund warum die Prozesse ansteigen. Vielleicht liegt es daran, dass man z.B. ein Laptop in der Ruhezustand versetzt und sich die Verbindung dann nicht ordentlich beendet. Die keep alives von Windows sind ja sehr hoch.

Viele Grüße,

Patrick

[quote=“kPat”][/quote]

Was Du machen könntest wäre ein Connection-Pooler. Aber ich weiß nicht, ob es sowas für Dein exotisches Betriebssystem gibt. Ansonsten: pg_stat_activity zeigt Dir, was die Verbindungen machen. Wenn ein Client eine Verbindung nicht beendet bleibt sie bis zu irgendwelchen Timeouts (vom OS) offen. Ich bin mir jetzt nicht ganz sicher, ob man evtl. statement_timeout sinnvoll setzen könnten (länger als die längst laufende Abfrage) und damit vielleicht solch Zombies eher wegbekommt.

Könntest das natürlich auch bei uns hosten, wir haben bessere Hardware am Start :wink: