背景:アプリケーションをnpgsqlv1からnpgsqlv2.0.9に移動しています。アプリケーションを数分間実行した後、System.Exception:プールから接続を取得中にタイムアウトが発生します。
Webは、これは接続のリークが原因であると主張しています(db接続を開いていますが、正しく閉じていません)。
それで
npgsqlでリークしているpostgres接続を診断しようとしています。
周りのさまざまなウェブ文献から; リークしている接続を診断する1つの方法は、npgsqlでログを設定し、ログでリークしている接続の警告メッセージを探すことです。問題は、このメッセージがログのどこにも表示されないことです。
npgsql接続を監視するユーティリティも見つかりましたが、不安定でクラッシュします。
そのため、コードを手動で検査する必要があります。npgsql接続を作成するすべての場所で、finallyブロックがそれを破棄します。データリーダーを開くすべての場所で、CommandBehavior.CloseConnectionが使用されます(データリーダーは破棄されます)。
他に確認する場所はありますか、または誰かが漏れているプール接続を探す方法を推奨できますか?