Tôi đã có một thiết lập django đang sử dụng Django 1.6.7 và Postgres 9.3 trên Ubuntu 14.04 LTS.
Tại bất kỳ thời điểm nào, trang web cũng nhận được khoảng ~ 250 kết nối đồng thời với cơ sở dữ liệu PostgreQuery, đó là Quad Core Xeon E5-2670 với tốc độ 2,5 GHz và có 16GB ram. Trung bình tải trên máy cụ thể đó trong suốt cả ngày là khoảng 20 đến 30.
Thỉnh thoảng tôi sẽ nhận được email trong sentry về việc kết nối thời gian tới cơ sở dữ liệu và tôi cho rằng việc kích hoạt một số loại kết nối sẽ giúp giảm thiểu vấn đề này, cũng như giảm tải cho cơ sở dữ liệu một chút.
Vì chúng tôi đang sử dụng Django 1.6, chúng tôi có sẵn tính năng tổng hợp sẵn cho chúng tôi. Tuy nhiên, khi tôi đặt CONN_MAX_AGE thành 10 giây hoặc 60 giây, gần như ngay lập tức số lượng kết nối đồng thời nhảy đến cài đặt tối đa được phép (gấp đôi những gì chúng ta thường thấy) và các kết nối bắt đầu bị từ chối.
Vì vậy, dường như lý do gì bao giờ hết, các kết nối ĐƯỢC kiên trì, nhưng họ KHÔNG được tái sử dụng.
Điều gì có thể là nguyên nhân của việc này?
Tái bút Chúng tôi cũng đang sử dụng gunicorn với --worker-class = eventlet. Có lẽ đây là nguồn gốc của tai ương của chúng ta?