Django django .db.utils.OperationalError: FATAL: оставшиеся слоты соединений зарезервированы для соединений суперпользователя без репликации - PullRequest
2 голосов
/ 08 января 2020
  File "/usr/local/lib/python3.7/dist-packages/psycopg2/__init__.py", line 126, in connect    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: FATAL:  remaining connection slots are reserved for non-replication superuser connections

В соответствии с документацией Postgres эта ошибка возникает, когда Django устанавливает больше соединений с Postgres БД, чем это ограничение по умолчанию.

  • Я хотел бы знать что может быть причиной того, что Django инициирует / открывает много соединений с БД.
  • Я хотел бы знать, каковы наилучшие методы, которые мы можем сделать, чтобы предотвратить это исключение.
  • Как увеличить предел подключения по умолчанию для Postgres?
#settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'xxxxx',
        'USER': 'xxxxx',
        'PASSWORD':'xxxxx',
        'HOST':'localhost',
        'PORT':'5432',
    }

1 Ответ

1 голос
/ 08 января 2020

Я считаю, что это нормально, учитывая, что Django framework не делает пул баз данных. Глядя на Django документы (https://docs.djangoproject.com/en/3.0/ref/databases/#transaction -spooling-and-server-side-cursors ), я мог бы найти предложение для пользователя pgBouncer (http://www.pgbouncer.org/), чтобы справиться с этим .

...