Управляемый Django + DigitalOcean PostgreS: “оставшиеся места для подключения зарезервированы для ролей с атрибутом суперпользователя” при использовании пула подключений

Я пытаюсь настроить Django для использования пула подключений к экземпляру PostgreSQL, управляемому DigitalOcean, но постоянно сталкиваюсь с этой ошибкой:

Операционная ошибка: ошибка подключения: ошибка подключения к серверу по адресу "xxxxxxxxxxxxxx", порт гггг: ФАТАЛЬНАЯ ошибка:
оставшиеся места для подключения зарезервированы для ролей с атрибутом СУПЕРПОЛЬЗОВАТЕЛЯ

Мои настройки баз данных выглядят следующим образом (Django 5.2+):

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': database_name,
        'USER': database_user,
        'PASSWORD': database_password,
        'HOST': database_host,
        'PORT': database_port,
        "OPTIONS": {
            'sslmode': sslmode,
            'pool': {
                'min_size': 5,
                'max_size': 150,
                'timeout': 20,
            },
        }
    }
}

Правильный ли это способ включить объединение в пул с помощью встроенных параметров Django['pool']?

Доступное вам количество подключений равно 25 * [Гигабайт оперативной памяти в Postgres] - 3. Тогда максимальное количество подключений, которое вы используете, равно [числу работников Django] * [max_size, заданному в settings.py]. Если первый из них больше второго, то все будет работать. Посмотрите, сколько рабочих элементов Django у вас запущено (ни в коем случае не только один рабочий элемент, если вы превысили лимит), и измените их количество.
Если вы не установили это число, то по умолчанию Gunicorn запускает [количество процессоров] * 2 + 1 рабочих. Таким образом, даже 1 vCPU на вашем сервере будет означать, что вы действительно превысили лимит.

Вернуться на верх