Bối cảnh: Tôi đang chuyển ứng dụng của mình từ npgsql v1 sang npgsql v2.0.9. Sau một vài phút chạy ứng dụng của tôi, tôi nhận được một System.Exception: Timeout trong khi nhận được kết nối từ nhóm.npgsql Rò rỉ Postgres DB Kết nối: Cách để theo dõi kết nối?
Web tuyên bố rằng điều này là do các kết nối bị rò rỉ (mở một kết nối db, nhưng không đóng đúng cách).
Vì vậy,
Tôi đang cố gắng chẩn đoán rò rỉ kết nối postgres trong npgsql.
Từ các tài liệu web khác nhau xung quanh; một cách để chẩn đoán các kết nối bị rò rỉ là thiết lập đăng nhập trên npgsql và tìm thông báo cảnh báo kết nối bị rò rỉ trong nhật ký. Vấn đề là, tôi không thấy thông báo này trong nhật ký ở bất cứ đâu.
Tôi cũng tìm thấy tiện ích theo dõi kết nối npgsql nhưng không ổn định và bị treo.
Vì vậy, tôi đã kiểm tra mã theo cách thủ công. Đối với mọi nơi tạo ra một kết nối npgsql, có một khối cuối cùng xử lý nó. Đối với mọi nơi mở trình quản lý dữ liệu, CommandBehavior.CloseConnection được sử dụng (và trình quản lý dữ liệu được xử lý).
Bất kỳ địa điểm nào khác để kiểm tra hoặc ai đó có thể giới thiệu cách tìm kiếm các kết nối bể bị rò rỉ?
Tôi gặp vấn đề tương tự. Nhưng tôi thấy các kết nối chỉ bị rò rỉ khi tôi sử dụng DbConnection.BeginTransaction và DbTransaction.Commit/Rollback. Tôi chắc chắn rằng tôi đóng/bỏ tất cả các kết nối đúng cách nhưng không giúp đỡ. Tôi nghĩ rằng đó là một vấn đề với chính Npgsql chứ không phải mã của chúng tôi. Hãy cho tôi biết nếu bạn đã tìm thấy giải pháp. Cảm ơn. – Fung