Ho una configurazione di Django che utilizza Django 1.6.7 e Postgres 9.3 su Ubuntu 14.04 LTS.
In qualsiasi momento, il sito riceve circa 250 connessioni simultanee al database PostgreSQL, che è un Quad Core Xeon E5-2670 a 2,5 GHz e ha 16 GB di RAM. La media del carico su quella particolare macchina durante il giorno è di circa 20-30.
Occasionalmente ricevo e-mail in sentinella sui timeout delle connessioni al database e immagino che abilitare una sorta di pool di connessioni aiuterà a mitigare questo problema, oltre a ridurre un po 'il carico sul database.
Dal momento che stiamo usando Django 1.6, abbiamo a disposizione il pooling integrato. Tuttavia, quando imposto CONN_MAX_AGE su 10 secondi o 60 secondi, quasi immediatamente il numero di connessioni simultanee passa all'impostazione massima consentita (che è circa il doppio di quello che vediamo normalmente) e le connessioni iniziano a essere rifiutate.
Così, sembra per quale motivo mai, i collegamenti SONO persistono, ma NON SONO essere riutilizzato.
Quale potrebbe essere la causa di questo?
PS. Stiamo anche usando gunicorn con --worker-class = eventlet. Forse questa è la fonte dei nostri guai?