2

当发生足够多的请求时,我的 Web 应用程序会用完与数据库的连接槽。尽管将其设置为运行似乎是保守大小的连接池,并且我限制了进程和线程的数量。我是否正确地认为连接池是跨线程共享的,而不是进程共享的?选择连接池大小、进程数和线程数的良好组合,同时避免耗尽数据库连接的好策略是什么?

我看到的错误:

OperationalError: (OperationalError) FATAL: 剩余的连接槽是为非复制超级用户连接保留的

/etc/postgresql/9.1/main/postgresql.conf:

   max_connections = 100

应用程序.ini:

   sqlalchemy.pool_size = 1
   sqlalchemy.max_overflow = 5

阿帕奇配置:

   WSGIDaemonProcess test1 processes=5 threads=10 maximum-requests=10000
   WSGIProcessGroup test1

查看进程: $ ps aux |grep postgres |wc 在合理的负载下,这可以增加到 102 并保持在那里,尽管许多连接处于空闲状态,并且出现错误。

4

0 回答 0