问题标签 [pgbouncer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 如何在 Linux 上让 PGBouncer 在重启时自动启动?
在 Windows Azure VM 中的 Ubuntu 12.04(精确)上,我在同一台机器上运行了 postgres 和 pgbouncer。一切都已设置并且可以正常工作,但是当 VM 重新启动时,pgbouncer 不会自动启动。
- 如何使它在重新启动时启动?
- Postgres 是否需要在 PGBouncer 之前运行?如果是这样,这是如何实现的?我假设如果 Postgres 没有运行,PGBouncer 仍然会运行任何 sql 连接都不会连接,或者这个假设是错误的吗?
我为启动它而运行的命令如下。注意:我需要成为“postgres”用户才能启动服务,否则会失败。还有详细的答案首选。Linux 不是我的正常操作系统。
如果有帮助,这就是 pgbouncer 的安装方式:
注意:我可以与 pgbouncer 服务(强制重新加载、状态、启动、停止)进行交互,但是只有在我第一次运行pgbouncer -d -v /etc/pgbouncer/pgbouncer.ini
命令之后。
.net - 无法从远程位置通过 pgbouncer 连接到数据库
我正在开发连接到 postgresql (npgsql) 的 .net 应用程序。由于大量的空闲连接(npgsql 无法终止它),我不得不安装 pgbouncer。我写了一个配置文件并设置了一个 auth_user_file。
pgbouncer 配置:
我允许在 16252 端口(iptables)上进行通信
当我通过 SSH 直接连接到服务器并且我想在本地通过 pgbouncer 连接时
一切安好。但是,当我想通过 pgbouncer 从另一个位置远程连接时,psql 客户端会向我抛出以下消息:
如果我只将端口更改为标准 5432(直接 postgresql),一切正常。
你有什么主意吗?
ruby-on-rails - 如何在heroku上使用rails设置pgbouncer?
Heroku 最近减少了与生产数据库的可用连接数(从 500 减少到 60)。打开的连接会消耗大量内存并导致问题,因此这似乎是朝着正确方向迈出的一步。
我的应用程序有 100 多个同时访问数据库的并发进程。Heroku 建议使用https://github.com/gregburek/heroku-buildpack-pgbouncer来解决这个问题。
我无法找到有关如何执行此操作的任何适当指南。我能够安装和启用 buildpack,但我不知道这些配置变量的作用以及它们是如何工作的。使用默认配置,我会遇到大量ActiveRecord::ConnectionTimeoutError
错误。
有没有人有这方面的经验,如果可以请提供有关如何正确执行此操作以及如何配置需要配置的所有内容的分步指南?
database - PostgreSQL 表锁
我在 debian 服务器中有一个使用 pgBouncer 连接池的 PostgreSQL 9.2 数据库。在该数据库中,普通用户对几个表执行查询,我有一个 cron 进程获取数据并插入表中(使用 pg/plsql 函数在插入之前进行一些验证)。我遇到的问题是,当我在 cron 进程(许多插入)上有巨大负载时,表被锁定并且对该表的查询没有响应(或需要很长时间才能响应)。有没有办法通过存储过程、数据库用户(cron 和查询使用不同的数据库用户)或类型(select 的优先级高于 insert)来设置优先级。如果在 postgreSQL 中无法定义用户优先级,是否有任何解决方法?插入可以等待,但用户查询不应该......
cron 进程在每次插入时创建和删除一个 pgbouncer 连接。如果我使用相同的连接,问题会更大(查询需要更长的时间)
提前致谢,克劳迪奥
django - pgbouncer postgres 多个 django 站点
我正在尝试使用 postgres 和 django 学习一些 pgbouncer - 但是在生产时我似乎遇到了问题。
所以,我有一个 django 网站说site1
,它使用以下 django 数据库settings.py
:
以上工作都很好site1
- 这在生产中运行。site2
现在,我介绍另一个使用新数据库调用的 django 站点(单独的 django 安装)site2db2
。所以,目前,我site2
在 django 中有我的 settings.py,如下所示:
不幸的是,当我尝试访问syncdb
第二个 django 站点时,我得到了;
我假设这是因为site1
使用相同的端口site2
?如何解决这个问题。任何指向我正确方向的指导都会很棒。
postgresql - Golang - pgbouncer 和事务使用
技术细节
- 去 1.2 版
- 用于 go bmizerany/pq 的 postrgres 库
这个问题让我发疯,我希望有人能够提供帮助。
我在 golang 中开发了一个应用程序来从 postgres 数据库中读取数据,并为每条记录发出一个 http 请求,然后更新数据库。
这一切都很简单。但是,我们有 pgbouncer。我们对 pgbouncer 的配置是这样的,它不支持准备好的语句。Go 默默地将所有查询包装在一个准备好的语句中。pgbouncer 的解决方法是设置一个事务。这对于诸如插入/更新/删除之类的事情都很好。
在选择语句的情况下,我将其包装在事务中:
(嗯,这似乎有点让缩进消失了) AsS 你可以看到我开始 bnut 没有关闭交易。这会导致 pg 方面的问题,即每个选择都处于“事务中的空闲”状态。
我已经尝试过 tx.Commit() 和 tx.Rollback() 并且在这两种情况下我都会遇到错误:
或者
如何在 Go 中成功关闭交易?我希望更新我们的 pgbouncer.ini 以允许我切换到驱动程序库的 lib/pq,但我不确定这是否会直接帮助解决这个问题。
那么,如何正确关闭 tx 对象,或者有没有办法强制 Go 在后台不使用准备好的语句?
谢谢内森
我试图改变一些事情:
我在日志中看到的这段代码:
但是,我应该指出,这是第二次尝试选择语句时。此应用程序选择一个批次,处理它,然后选择一个后续批次。此错误发生在第二次选择上。第一个选择没有问题。
postgresql - 当启用事务池并发出单个语句时,pgbouncer 的行为如何?
我在 Web 应用程序上使用 pgbouncer,大多数线程以 BEGIN 开头,以 COMMIT 或 ROLLBACK 结尾,所以我们使用事务池,一切都很好。
但是,我们也有一些不使用事务的进程:相反,它们只是一个接一个地发出命令。
我相信,在事务池下,每个命令本身就是一个事务,就像您直接连接到服务器时一样,也许每个命令都从池中获得不同的连接。但是我被告知 pgbouncer 不会这样做,而是永远找不到最终的 COMMIT/ROLLBACK,因此连接不会返回到池中。
有人知道会发生什么吗?我在文档中找不到任何内容。
php - 是否可以检测到 PHP 正在通过 PgBouncer 池连接到 PostgreSQL 数据库?
在 PHP Web 应用程序的管理仪表板页面上,我想显示有关数据库连接的详细信息。根据本地设置,连接可能是直接的,也可能由 PgBouncer 代理。是否可以准确检测到我正在连接的内容?此信息可能对调试有用。
检查默认端口(6432 与 5432)是可能的,但显然不可靠。PgBouncer 是否向连接中注入任何有助于将其与直接连接区分开来的东西?
linux - postgres 中的最大连接数
我有限制在 100 个 max_connections 的 postgres 服务器,并且在某些时候,当应用程序大量使用时达到了限制,所以我尝试增加该数量,当我尝试重新启动 postgres 时,不会启动,并且在日志中我得到了由于某些 System V IPC 参数(Ubuntu linux)而无法启动的消息。所以接下来的问题是,尝试更改此参数是否更好,或者最好使用一些 postgres 插件,例如 pgbouncer(我想我在某处读到 pgbouncer 可以解决此问题)或等等...关于更改 System V 的任何建议IPC 参数或使用某些插件解析。