Hey Leute. Werde hier wohl am Besten aufgehoben sein.
Und zwar gehte es um pgpool2. Ich verwende es, für Connection pooling. Wenn ich 1-2 Anfragen Pro Sekunde ansetze, dann funktioniert alles problemlos.
Sind es mehr, 20/sekunde. Bearbeitet pgpool gar keine Verbindungen mehr. D.h. die Querys liegen tot auf dem pgpool Server ( werden also nicht mehr weitergeleitet).
Gehe mal von aus, dass es eine Art “dead-lock” problem ist. Jemand ne Idee?
wenn es dir NUR um connection pooling geht, dann empfehle ich die selbst einen pool zu implementieren - das ist i.d.r. kein grosser akt.
es gibt sehr wahrscheinlich fuer so ziemlich jede gaengige sprache irgendwelche beispiele und hilfestellungen im netz - oder gar fertige libs.
ich wuerde dennoch empfehlen es selbst zu bauen - denn der pool ist auch ein wichtiger bestandteil des clients und sollte genau dessen anforderungen genuegen - z.B. wann, wie, wozu werden connections benoetigt
ich frage mich immer wie pgpool die system-kosten zur erzeugung von db-connections verringern soll, wenn der client sich statt mit der DB mit pg-pool “unterhalten” soll.
Wenn du etwas nachdenkst kommst sogar du da drauf das der Pool ständig läuft und ständig die Datenbankverbindung offen hat. Im Gegensatz dazu muss die Datenbank pro ankommendem Request einen neuen Prozess starten und das kostet Performance. Das war einfach, oder?
So, nachdem schon genug Halbwissen beigetragen wurde:
Kommen Requests überhaupt an der Datenbank an?
Kommen Requests am Pool an und gehen die dort auch hinaus? Ev. mal den Netzwerktraffic mitschneiden.
Wie sieht es mit Logging in der Poolsoftware aus, ist da irgendetwas brauchbares?
Okay ich greife das problem nochmal auf. So einfach? Naja ich habe folgende Problemstellung. ich habe ca. 50 Rechner, die jeweils 4 Verbindungen zu meinem Server aufbauen. Naja Connection pooling muss dann genau bei der Datenbank entstehen?
Dennoch sollte pgpooling einen solchen Bug nicht haben? Hab das jetzt unter mehreren system ausprobiert, scheint wohl wirklich ein bug zu sein? Omg
Jemand eine Idee?
Klar kommen die Requests bei wenigen Verbindungen an. Es wäre aber interessant zu wissen ob man das Problem auf Datenbank- oder auf Poolseite suchen muss. Dafür musst du wissen ob die Verbindungen weitergereicht werden.
Das kannst du gut herausfinden indem du den Traffic auf beiden Seiten des Pools analysierst und zusätzlich schaust wieviele Backends in der Datenbank wirklich geöffnet werden.
ich hatte kuerzlich einen deadlock bei einem close eines java.sql.Statement beobachtet - trat aber nur einmal auf - und nach einem programm-fehler … noch bin ich nicht beunruhigt