I've got a django setup are using Django 1.6.7 and Postgres 9.3 on Ubuntu 14.04 LTS.
At any given time, the site gets about ~250 simultaneous connections to the PostgreSQL database, which is a Quad Core Xeon E5-2670 at 2.5GHz, and has 16GB of ram. The load average on that particular machine throughout the day is around 20 to 30.
Occasionally I will get emails in sentry about connections timing out to the database, and I figure enabling some sort of connection pooling will help mitigate this issue, as well as lower the load on the database a bit.
Since we are using Django 1.6, we do have the built in pooling available to us. However, when I set CONN_MAX_AGE to 10 seconds, or 60 seconds, almost immediately the number of simultaneous connections jumps to the maximum allowed setting (which is about double what we usually see), and connections start getting rejected.
So, it appears for what ever reason, the connections ARE persisting, but they ARE NOT being reused.
What could be the cause of this?
PS. We are also using gunicorn with --worker-class=eventlet. Perhaps this is the source of our woes?