由于我在我的Django服务器上使用了CONN_MAX_AGE: 300
,请求失败并出现错误,因为PostgreSQL超过了max_connections
限制(默认为100)。
最好的解决策略是什么?我尝试使用pgpool2,但这根本没有解决问题。现在,连接被pgpool 2排队(让网站永远等待,并最终导致网关超时)。
我期望使用pgpool会减少发送到PostgreSQL的空闲连接数量,而不是再次引起相同的问题。
以下是我使用的设置:
pgpool2:
num_init_children = 32 #需要这么多工作进程吗?
max_pool = 10 #默认值为4
postgres:
max_connections = 400 #升级自默认值100
uWSGI / Django:
- 所有工作进程都有20个线程。
- 总共有10个工作进程,包括所有站点。
VPS是一个8核Linode @ 2.27GHz,内存为2GB。
userlist.txt
文件中添加用户,但这已经不是问题了,因为我让部署脚本为每个站点执行了该操作。 - vdboor