Saya punya setup Django menggunakan Django 1.6.7 dan Postgres 9.3 di Ubuntu 14.04 LTS.
Setiap saat, situs ini mendapatkan sekitar ~ 250 koneksi simultan ke database PostgreSQL, yang merupakan Quad Core Xeon E5-2670 pada 2.5GHz, dan memiliki ram 16GB. Rata-rata beban pada mesin tertentu sepanjang hari adalah sekitar 20 hingga 30.
Kadang-kadang saya akan mendapatkan email di sentry tentang waktu koneksi ke database, dan saya pikir mengaktifkan semacam pooling koneksi akan membantu mengurangi masalah ini, serta sedikit menurunkan beban pada database sedikit.
Karena kami menggunakan Django 1.6, kami memiliki pooling bawaan yang tersedia untuk kami. Namun, ketika saya mengatur CONN_MAX_AGE ke 10 detik, atau 60 detik, segera jumlah koneksi simultan melompat ke pengaturan maksimum yang diizinkan (yaitu sekitar dua kali lipat dari apa yang biasanya kita lihat), dan koneksi mulai ditolak.
Jadi, tampaknya untuk alasan apa yang pernah, koneksi ADALAH bertahan, tapi mereka TIDAK digunakan kembali.
Apa yang bisa menjadi penyebab hal ini?
PS. Kami juga menggunakan gunicorn dengan --worker-class = eventlet. Mungkin ini sumber kesengsaraan kita?
sumber