В последнее время мое приложение Django часто терпит крах из-за ошибок подключения к базе данных:
OperationalError: FATAL: sorry, too many clients already
Когда я перехожу в базу данных приложения, я вижу, что на самом деле существует почти 100 открытых соединений, все с одним и тем же запросом (выполняемым ORM Django) и все в состоянии idle
.
Я вручную делал SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state = 'idle';
, но я недоумеваю, почему это происходит. Может ли кто-нибудь пролить свет на то, что здесь происходит?
Настройки базы данных Django не отклоняются от значений по умолчанию (я не определил CONN_MAX_AGE
или что-то в этом роде).
Что может быть причиной этого? Я не делаю никаких продвинутых запросов Django. Это что-то, что можно решить с помощью настройки Django или, возможно, некоторой конфигурации PostgreSQL? Любые советы приветствуются.