Django ORM在Postgres DB上留下空闲连接

gli*_*its 14 django postgresql database-connection django-orm

最近,由于数据库连接错误,我的Django应用程序经常崩溃:

OperationalError: FATAL:  sorry, too many clients already
Run Code Online (Sandbox Code Playgroud)

当我进入app数据库时,我发现确实有近100个打开的连接,都有相同的查询(由Django ORM执行)并且全部处于idle状态.

我一直在手动做SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state = 'idle';但我很困惑为什么会发生这种情况.任何人都可以对这里发生的事情有所了解吗?

我的Django数据库设置不会偏离默认值(我没有定义CONN_MAX_AGE或任何这种性质).

什么可能导致这个?我没有做任何高级Django查询.这可以通过Django设置或者某些PostgreSQL配置来解决吗?任何建议表示赞赏.

rai*_*ert 4

没有更多细节的最佳猜测,但如果是相同的查询,并且它们都空闲,感觉就像您正在执行某种异步编程,并且遇到了死锁,特别是您的死锁在数据库中表现出来连接变得饱和。