Tengo una configuración de django usando Django 1.6.7 y Postgres 9.3 en Ubuntu 14.04 LTS.
En cualquier momento, el sitio obtiene alrededor de ~ 250 conexiones simultáneas a la base de datos PostgreSQL, que es un Quad Core Xeon E5-2670 a 2.5GHz, y tiene 16GB de ram. El promedio de carga en esa máquina en particular durante todo el día es de alrededor de 20 a 30.
Ocasionalmente, recibiré correos electrónicos en centinela sobre el tiempo de espera de las conexiones a la base de datos, y creo que habilitar algún tipo de agrupación de conexiones ayudará a mitigar este problema, así como a reducir un poco la carga en la base de datos.
Como estamos usando Django 1.6, tenemos la agrupación integrada disponible para nosotros. Sin embargo, cuando configuro CONN_MAX_AGE en 10 segundos, o 60 segundos, casi inmediatamente el número de conexiones simultáneas salta a la configuración máxima permitida (que es aproximadamente el doble de lo que normalmente vemos), y las conexiones comienzan a ser rechazadas.
Por lo tanto, parece por qué razón nunca, las conexiones SE persisten, pero NO ESTÁN ser reutilizado.
¿Cuál podría ser la causa de esto?
PD. También estamos usando gunicorn con --worker-class = eventlet. Quizás esta es la fuente de nuestros problemas?
fuente