Hintergrund: Ich verschiebe meine Anwendung von npgsql v1 zu npgsql v2.0.9. Nach ein paar Minuten der Ausführung meiner Anwendung erhalte ich eine System.Exception: Timeout, während ich eine Verbindung aus dem Pool erhalte.npgsql Undichte Postgres DB-Verbindungen: Möglichkeit, Verbindungen zu überwachen?
Das Netz behauptet, dass dies auf undichte Verbindungen zurückzuführen ist (Öffnen einer Db-Verbindung, aber nicht ordnungsgemäß schließen).
So
Ich versuche, Postgres Verbindungen in Npgsql zu diagnostizieren undicht.
Aus den verschiedenen Web-Literatur herum; Eine Möglichkeit, austretende Verbindungen zu diagnostizieren, besteht darin, die Protokollierung von npgsql einzurichten und im Protokoll auf die Warnmeldung für eine undichte Verbindung zu prüfen. Problem ist, ich sehe diese Nachricht in den Protokollen nirgends.
Ich fand auch Dienstprogramm, das npgsql Verbindungen überwacht, aber es ist instabil und stürzt ab.
So bin ich links, Code manuell zu überprüfen. Für jeden Ort, der eine npgsql-Verbindung erstellt, gibt es schließlich einen Block, der ihn entsorgt. Für alle Orte, die einen Datenreader öffnen, wird CommandBehavior.CloseConnection verwendet (und der Datenreader wird abgelegt).
Irgendwelche anderen Orte zu überprüfen oder kann jemand eine Möglichkeit empfehlen, nach undichten Poolverbindungen zu suchen?
Ich habe genau das gleiche Problem. Aber ich finde Verbindungen nur undicht, wenn ich DbConnection.BeginTransaction und DbTransaction.Commit/Rollback verwende. Ich sorge dafür, dass ich alle Verbindungen richtig schließe/entsorge, aber keine Hilfe. Ich denke, es ist ein Problem mit Npgsql selbst und nicht mit unserem Code. Lass es mich wissen, wenn du die Lösung gefunden hast. Vielen Dank. – Fung