У мене в налаштуваннях джанго використовуються Django 1.6.7 та Postgres 9.3 на Ubuntu 14.04 LTS.
У будь-який момент сайт отримує близько ~ 250 одночасних підключень до бази даних PostgreSQL, яка є Quad Core Xeon E5-2670 на 2,5 ГГц і має 16 ГБ оперативної пам’яті. Середнє навантаження на конкретній машині протягом дня становить приблизно від 20 до 30.
Іноді я отримуватиму повідомлення електронною поштою про часові розв’язки з'єднань із базою даних, і я думаю, що включення певного об'єднання з'єднань допоможе пом'якшити цю проблему, а також трохи зменшить навантаження на базу даних.
Оскільки ми використовуємо Django 1.6, у нас є доступний вбудований пул. Однак, коли я встановив CONN_MAX_AGE на 10 секунд або 60 секунд, майже одразу кількість одночасних з'єднань переходить до максимально дозволеного налаштування (що приблизно вдвічі більше, ніж ми зазвичай бачимо), і з'єднання починають відхилятися.
Таким чином, виявляється , для того, що коли - небудь причини, з'єднання ARE зберігаються, але вони НЕ повторного використання.
Що може бути причиною цього?
PS. Ми також використовуємо gunicorn з --worker-class = eventlet. Можливо, це джерело наших неприємностей?