【发布时间】:2014-08-01 17:45:55
【问题描述】:
由于我在 Django 服务器上使用 CONN_MAX_AGE: 300,请求失败并出现错误,因为 PostgreSQL 超出了 max_connections 限制(默认为 100)。
解决这个问题的最佳策略是什么?我试过使用 pgpool2,但这根本没有解决问题。现在连接由 pgpool 2 排队(让站点永远等待,最终导致网关超时)。
我预计使用 pgpool 会减少进入 PostgreSQL 的空闲连接数,不会再次导致同样的问题。
这些是我使用的设置:
pgpool2:
num_init_children = 32 # are so many workers needed?
max_pool = 10 # default is 4
postgres:
max_connections = 400 # upgraded from default 100
uWSGI/Django:
- 所有工作线程都有 20 个线程。
- 所有站点加起来总共有 10 名工人。
VPS 是一个 8 核 Linode,频率为 2.27GHz,内存为 2GB。
【问题讨论】:
-
你有没有解决过这个@veboor?我面临着一个非常相似的问题。
-
不,我选择了 pgbouncer,你也可以使用 django-postgrespool。 PgBouncer 要求将用户添加到
userlist.txt文件中,但这不再是问题,因为我让部署脚本为每个站点执行该操作。
标签: python django postgresql connection-pooling pgpool