为什么QGIS要为PostgreSQL Server创建多个连接?

wljmcqd8  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(145)

我们有一个运行PostGIS的PostgreSQL数据库,今天我们遇到了可用连接太少的问题。我们主要使用QGIS访问数据库。我们意识到了这个问题,因为多个用户收到了以下错误:
FATAL:剩余的连接插槽保留给非复制超级用户连接
当检查pgAdmin中的连接数时,我意识到一件事,我以前看到过,但因为我从来没有遇到过问题并不太关心。
QGIS为同一个用户创建多个到PostgreSQL的连接到同一个数据库。

**现在我想知道为什么会这样,以及我如何改变这种行为。

  • 例如,如果一个人通过不同的用户组获得了对数据库的访问权限,是否会发生这种情况?*

一种方法可能是一些用户遇到的问题,如果您将图层添加到之前创建的QGIS项目中,则可能会多次要求您提供登录凭据(如果这些凭据发生更改)。在我看来,可能不同的凭据与项目保存,因此可能使用多个连接。有人能证实或否认这一点吗?- 也欢迎您查看测试场景的建议。

欢迎任何想法、提示或意见

顺便说一下:是的,我们增加了max_connections的数量,但我想了解为什么会发生这种情况,并更接近情况的核心。

vfh0ocws

vfh0ocws1#

我没有测试为什么会发生这种情况,但假设这是因为QGIS同时向数据库发出多个请求,因此启动了多个连接。对我们来说,问题是QGIS似乎从来没有关闭过连接,所以即使它们都闲置在那里,我们仍然达到了postgres max_connections的限制,
我们的解决方案是在运行postgres的Ubuntu服务器上安装pgbouncer

apt-get install pgbouncer

字符串
将用户名和密码用双引号加到/etc/pgbouncer/userlist. txt

"username" "password"


重启pgbouncer

systemctl restart pgbouncer.service


在QGIS中,将数据库连接的端口更改为6432
来自QGIS的连接现在将被pgbouncer池化和重用(默认池大小为20)
如果需要,您可以在此处修改配置/etc/pgbouncer/pgbouncer.conf

相关问题