Django ORM和PostgreSQL连接限制

时间:2010-06-15 22:45:58

标签: python database django postgresql django-orm

我正在Postgresql 8.1.21上运行Django项目(使用Django 1.1.1,Python2.5,psycopg2,Apache2和mod_wsgi 3.2)。我们最近遇到了这个可爱的错误:

OperationalError: FATAL: connection limit exceeded for non-superusers

我不是第一个遇到这种情况的人。关于这个错误有很多讨论,特别是psycopg,但其中大部分内容都集中在旧版本的Django和/或提供了涉及Django本身代码编辑的解决方案。我还没有找到一个简洁的解释,如何解决Django ORM(或psycopg,无论哪个是真正负责的,在这种情况下)留下开放的Postgre连接的问题。

只需在每个视图的末尾添加connection.close()即可解决此问题?更好的是,有没有人最终解决了这个问题并踢出了这个错误的屁股?

编辑:我们后来将Postgresql的限制提升至500个连接;这可以防止错误的出现,但是用过多的内存使用来代替它。

1 个答案:

答案 0 :(得分:1)

这可能是由其他事情引起的。例如,以理论上可以接受比数据库本身可以同时接受的更多并发请求的方式配置Apache / mod_wsgi。您是否已查看过Apache / mod_wsgi配置,并将最大客户端的限制与PostgreSQL的限制进行了比较,以确保尚未完成此类操作。显然,这假设您已经设法在Apache中达到了这个限制的一些方式,也取决于如何设置任何数据库连接池。