PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Django ORM để lại các kết nối không hoạt động trên Postgres DB

rõ ràng bạn không ngắt kết nối. Sử dụng db.close_connection() sau khi kết thúc truy vấn sẽ hữu ích. Ngoài ra Nếu tôi hiểu đúng CONN_MAX_AGE đến một số giá trị ngắn có thể hữu ích. Và hãy xem xét sử dụng một số trình gộp phiên, ví dụ:pgbouncer cho các kết nối django. Bằng cách này nếu bạn có quá nhiều kết nối, nó sẽ đợi (hoặc sử dụng lại trước đó, tùy thuộc vào cấu hình) thay vì hủy thực thi với lỗi ...

cập nhật :giải thích lý do tại sao tôi đề xuất nó

từ tài liệu

Vì vậy, nếu bạn có nhiều chủ đề hơn thì hãy đăng bài max_connections , bạn nhận được lỗi được đề cập. Mỗi luồng có thể sử dụng lại kết nối nếu CONN_MAX_AGE chưa vượt qua. Cài đặt của bạn là 0, vì vậy kết nối sẽ bị đóng sau khi hoàn thành truy vấn, nhưng bạn thấy 100 kết nối không hoạt động. Vì vậy, họ không đóng cửa. Số lượng lớn kết nối có nghĩa là chúng cũng không được sử dụng lại (logic:nếu bạn có 100 truy vấn song song, chúng sẽ không hoạt động và nếu bạn có nhiều như vậy, chúng sẽ không được sử dụng lại - mở mới). Vì vậy, tôi nghĩ rằng django không đóng chúng dưới dạng phóng to - vì vậy CONN_MAX_AGE được đặt thành 0 không hoạt động trong mã của bạn. Vì vậy, tôi đề xuất sử dụng db.close_connection() buộc ngắt kết nối và đặt CONN_MAX_AGE thành một giá trị nhỏ nào đó có thể thay đổi hành vi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các truy vấn kiểu CHỌN có phải là kiểu duy nhất có thể được lồng vào nhau không?

  2. C # SqlConnection Exception:Từ khoá không được hỗ trợ 'Cổng'

  3. Django &Postgres - phân vị (trung vị) và nhóm theo

  4. [Video] Ansible và PostgreSQL

  5. Tại sao tôi gặp lỗi không thể kết nối với máy chủ cho các postgres trong Mac OS Lion?