数据库连接太多(django 4.x / ASGI)

zqry0prt  于 2023-06-07  发布在  Go
关注(0)|答案(1)|浏览(370)

我已经部署了一个django应用程序(在ASGI上使用uvicorn),并获得了大量的OperationalError FATAL: sorry, too many clients already
似乎这是django 4.x和ASGI的已知issue #33497,但到目前为止我找不到任何东西(除了承认它)
有什么方法可以解决这个问题吗?或者我应该切换到WSGI(或者降级到3.2)?
在我看来,这是一个完全使用ASGI的阻塞问题。是不是应该有更好的记录?(除非我错过了)

brgchamk

brgchamk1#

我遇到了这个问题,并通过在我的Django www.example.com中设置CONN_MAX_AGE = 0(这也是默认值)解决了它settings.py:

DATABASES = {
    "default": {
        "CONN_MAX_AGE": 0,  #  Use 0 to close database connections at the end of each request
        "ENGINE": "django.db.backends.postgresql",
        "HOST": os.environ.get("POSTGRES_HOST", "db"),
        "NAME": os.environ.get("POSTGRES_DB"),
        "PASSWORD": os.environ.get("POSTGRES_PASSWORD"),
        "PORT": os.environ.get("POSTGRES_PORT", "5432"),
        "USER": os.environ.get("POSTGRES_USER"),
    }
}

CONN_MAX_AGE = 0有一些缺点,因为它基本上关闭了持久连接。可能有更好的解决方案,如连接池或调整工作进程的数量,以允许更有效地使用连接。

相关问题