我们有一个运行PostGIS的PostgreSQL数据库,今天我们遇到了可用连接太少的问题。我们主要使用QGIS访问数据库。我们意识到了这个问题,因为多个用户收到了以下错误:
FATAL:剩余的连接插槽保留给非复制超级用户连接
当检查pgAdmin中的连接数时,我意识到一件事,我以前看到过,但因为我从来没有遇到过问题并不太关心。
QGIS为同一个用户创建多个到PostgreSQL的连接到同一个数据库。
**现在我想知道为什么会这样,以及我如何改变这种行为。
- 例如,如果一个人通过不同的用户组获得了对数据库的访问权限,是否会发生这种情况?*
一种方法可能是一些用户遇到的问题,如果您将图层添加到之前创建的QGIS项目中,则可能会多次要求您提供登录凭据(如果这些凭据发生更改)。在我看来,可能不同的凭据与项目保存,因此可能使用多个连接。有人能证实或否认这一点吗?- 也欢迎您查看测试场景的建议。
欢迎任何想法、提示或意见
顺便说一下:是的,我们增加了max_connections的数量,但我想了解为什么会发生这种情况,并更接近情况的核心。
1条答案
按热度按时间vfh0ocws1#
我没有测试为什么会发生这种情况,但假设这是因为QGIS同时向数据库发出多个请求,因此启动了多个连接。对我们来说,问题是QGIS似乎从来没有关闭过连接,所以即使它们都闲置在那里,我们仍然达到了postgres
max_connections
的限制,我们的解决方案是在运行postgres的Ubuntu服务器上安装
pgbouncer
。字符串
将用户名和密码用双引号加到/etc/pgbouncer/userlist. txt
型
重启pgbouncer
型
在QGIS中,将数据库连接的端口更改为
6432
来自QGIS的连接现在将被pgbouncer池化和重用(默认池大小为20)
如果需要,您可以在此处修改配置
/etc/pgbouncer/pgbouncer.conf