当有足够的请求发生时,我的网络应用程序用尽了连接到数据库的插槽。尽管设置它运行似乎是一个保守的连接池大小,我限制了进程数,线程。我是否更正了连接池是跨线程共享的,而不是进程?什么是选择连接池大小,进程数和线程数的良好组合,同时避免数据库连接耗尽的好策略?
我看到的错误:
OperationalError:(OperationalError)致命错误:剩余连接 插槽保留用于非复制超级用户连接
/etc/postgresql/9.1/main/postgresql.conf:
max_connections = 100
app.ini:
sqlalchemy.pool_size = 1
sqlalchemy.max_overflow = 5
Apache配置:
WSGIDaemonProcess test1 processes=5 threads=10 maximum-requests=10000
WSGIProcessGroup test1
查看流程: $ ps aux | grep postgres | wc 这可以在合理负载下增加到102并保持在那里,尽管许多连接处于空闲状态,并且出现错误。