Управляемый 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 на вашем сервере будет означать, что вы действительно превысили лимит.