Der Pool, den wir verwenden ist ein eigener, er wurde in unserem Hause selber geschrieben. Leider ist der Mitarbeiter, der das Ding programmiert hat nicht mehr in der Firma und so auch größtenteils das Know-How nicht mehr :/
Ein Timeout-Parameter ist vorhanden, allerdings weiß ich im Moment nicht ob dieser konfiguriert ist.
Was ich noch vergessen hatte: Ich gehe mit einem pgAdmin III-Client von meinem lokalen Rechner aus auf die VM. Und es kam schonmal vor, dass beim Ausführen von Queries über den Client sich diese nicht mehr beendeten. Vielleicht (evtl) in dem Fall ein Netzwerkproblem. Allerdings passen die Fehlermeldungen im DB-Log zeitlich nicht zu denen der Probleme mit dem PGAdmin.
Ich werde morgen mal nach dem Connection-Pool schauen und dann nochmal mit unserem Netzwerk-Admin sprechen, was wie genau konfiguriert ist.
Hmm, so kommen wir nicht weiter.
Gibt es eine Möglichkeit, da direkt auf die VM zu schauen?
Da sind zu viele Besonderheiten im Spiel.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Hallo,
konnte erst jetzt wieder Antworten. Nun brechen auch Verbindungen zu unserem Programm weg. Hier die Exception dazu:
Netzwerkprobleme sind wie gesagt auszuschließen, da sich Datenbankserver und Anwendung auf dem selben Rechner verbinden.
Für eure Unterstützung wäre ich sehr dankbar, da uns dieses Problem nun schon seit einiger Zeit verfolgt...
Caused by: org.postgresql.util.PSQLException: Eingabe/Ausgabe-Fehler {0} beim Senden an das Backend.
at org.postgresql.core.v3.QueryExecutorImpl.execute(Q ueryExecutorImpl.java:283)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execut e(AbstractJdbc2Statement.java:479)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execut eWithFlags(AbstractJdbc2Statement.java:353)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execut eQuery(AbstractJdbc2Statement.java:252)
at
....
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream. java:168)
at org.postgresql.core.VisibleBufferedInputStream.rea dMore(VisibleBufferedInputStream.java:135)
at org.postgresql.core.VisibleBufferedInputStream.ens ureBytes(VisibleBufferedInputStream.java:104)
at org.postgresql.core.VisibleBufferedInputStream.rea d(VisibleBufferedInputStream.java:73)
at org.postgresql.core.PGStream.ReceiveChar(PGStream. java:259)
at org.postgresql.core.v3.QueryExecutorImpl.processRe sults(QueryExecutorImpl.java:1620)
at org.postgresql.core.v3.QueryExecutorImpl.execute(Q ueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execut e(AbstractJdbc2Statement.java:479)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execut eWithFlags(AbstractJdbc2Statement.java:353)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execut eQuery(AbstractJdbc2Statement.java:252)
"Connection reset" bedeutet, dass irgendjemand oder irgendetwas die Verbindung zurücksetzt.
Aber ich fürchte, so aus der Ferne wird man den Schuldigen nicht ausmachen können.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Ich glaube, ich habe den schuldigen gefunden.
Im DB-Logfile hab ich die Datenbankverbindungen mit geloggt.
Dort ist zu sehen, dass der Disconnect immer exact nach 2 Std erfolgt - das ist auf Linux ein Timeout für ungenutzte Connections, wie ich im Administrationshandbuch nachgelesen habe.
Die Frage ist nur: Was mache ich mit diesen Idle Connections? Einach periodisch einen "Ping" Select auf jeder Connection abfeuern?
Du könntest mit
spielen. Viel Spaß!Code:#tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds; # 0 selects the system default #tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds; # 0 selects the system default #tcp_keepalives_count = 0 # TCP_KEEPCNT; # 0 selects the system default
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Oder den Timeout in Linux erhöhen.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Kann man diese Überprüfung auch abstellen, bzw. so konfigurieren das Verbindungen nie automatisch geschlossen werden?
Habe bisher keine Einstellung dazu gefunden.
Ich bin in Sachen Linux wirklich ein absoluter Anfänger, frage mich aber warum ein Betriebssystem soetwas tut. Sollte diese Entscheidung nicht dem Anwender überlassen sein?
Was wäre ein möglicher Lösungsansatz außer das Timeout höher zu stellen? Postgresql verträgt anscheinend eh keine Werte über 48 Std.
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen