我有一个Django设置,在Ubuntu 14.04 LTS上使用Django 1.6.7和Postgres 9.3。
在任何给定时间,该站点都可以同时与PostgreSQL数据库建立约250个连接,该数据库是2.5GHz的Quad Core Xeon E5-2670,内存为16GB。该特定机器全天的平均负载约为20到30。
有时,我会收到关于连接超时到数据库的消息,并且我认为启用某种连接池将有助于减轻此问题,并稍微降低数据库的负载。
由于我们使用的是Django 1.6,因此我们可以使用内置池。但是,当我将CONN_MAX_AGE设置为10秒或60秒时,并发连接数几乎立即跳到允许的最大设置(大约是我们通常看到的两倍),并且连接开始被拒绝。
所以,出现什么都原因,连接ARE坚持,但他们不被重用。
这可能是什么原因?
PS。我们也将gunicorn与--worker-class = eventlet一起使用。也许这就是我们困扰的根源?