J'ai une configuration django qui utilise Django 1.6.7 et Postgres 9.3 sur Ubuntu 14.04 LTS.
À tout moment, le site obtient environ 250 connexions simultanées à la base de données PostgreSQL, qui est un Quad Core Xeon E5-2670 à 2,5 GHz et dispose de 16 Go de RAM. La charge moyenne sur cette machine particulière tout au long de la journée est d'environ 20 à 30.
Parfois, je reçois des e-mails en sentinelle sur les connexions expirant vers la base de données, et je pense qu'activer une sorte de regroupement de connexions aidera à atténuer ce problème, ainsi qu'à réduire un peu la charge sur la base de données.
Puisque nous utilisons Django 1.6, nous avons le pooling intégré à notre disposition. Cependant, lorsque j'ai défini CONN_MAX_AGE sur 10 secondes ou 60 secondes, presque immédiatement le nombre de connexions simultanées atteint le paramètre maximum autorisé (qui est environ le double de ce que nous voyons habituellement) et les connexions commencent à être rejetées.
Donc, il semble que pour quelque raison que ce soit, les connexions SONT persistantes, mais NE SONT PAS réutilisées.
Quelle pourrait en être la cause?
PS. Nous utilisons également gunicorn avec --worker-class = eventlet. C'est peut-être la source de nos malheurs?
la source