You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Django连接DigitalOcean托管PostgreSQL连接池遇连接槽报错

Django连接DigitalOcean PostgreSQL连接池配置问题解答

问题还原

尝试配置Django 5.2+连接DigitalOcean托管的PostgreSQL实例并启用连接池时,反复遇到以下错误:

OperationalError: connection failed: connection to server at "xxxxxxxxxxxx", port yyyy failed: FATAL: remaining connection slots are reserved for roles with the SUPERUSER attribute

当前使用的数据库配置:

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,
            },
        }
    }
}

核心解答

1. 连接池配置语法是否正确?

是对的。Django 5.2+基于psycopg3实现了内置连接池支持,确实可以通过OPTIONS['pool']来配置连接池的min_size、max_size、timeout等参数,你的配置语法没有问题。

2. 错误原因及解决办法

错误的根源是连接池最大连接数设置超过了DigitalOcean PostgreSQL实例的可用连接配额:

  • DigitalOcean托管的PostgreSQL实例有固定的最大连接数限制(不同规格实例配额不同,基础款可能只有几十到一百左右),你设置的max_size=150远高于实例的实际可用连接数,导致连接池尝试创建过多连接,耗尽了普通用户的连接槽,剩下的连接槽仅留给超级用户,因此触发报错。

解决步骤:

  • 先查清楚你的DO PostgreSQL实例的最大连接数:可以在DigitalOcean控制面板的数据库详情页查看配额,或者用超级用户登录数据库执行SHOW max_connections;命令获取。
  • 调整连接池参数:把max_size设置为小于实例最大连接数,建议预留10-20个连接给超级用户和系统使用。比如实例最大连接数是100,就把max_size设为80;同时min_size不要过高,改成2-5即可,避免启动时就占用过多连接。
  • 同步调整Django的并发设置:如果用Gunicorn这类WSGI服务器,worker数量×每个worker的线程数,不能超过连接池的max_size,否则会导致连接池不够用,进而触发额外连接请求,再次耗尽配额。
  • 确认用户权限:你的数据库用户不是超级用户(DO默认创建的用户都不是),所以绝对不能依赖预留的超级用户连接槽,必须严格控制连接数在普通用户的可用范围内。

修正后的配置示例

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': 2,
                'max_size': 80,  # 根据你的实例实际配额调整
                'timeout': 20,
            },
        }
    }
}

内容的提问来源于stack exchange,提问作者Medium Quora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 06:51:13