问题标签 [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.

0 投票
3 回答
4687 浏览

php - 事务模式下的 PHP 和 pgbouncer:当前事务被中止

我运行了一个 Drupal 7.2 网站,该网站嵌入了一个带有少量自定义 PHP 脚本的 flash 游戏,用于玩家统计数据。使用 CentOS 5.6/64 位、PostgreSQL 8.4.8 和 PHP 5.3。它是具有 4GB RAM 的 Quad-Opteron。

在高峰时期(大约有 500 名玩家在线),我的网站曾经因过多的 postmaster 进程而崩溃。根据pgsql-general 邮件列表的建议,我安装了 pgbouncer 1.3.4 和以下 /etc/pgbouncer.ini:

并且在 postgresql.conf 中增加了 shared_buffers = 1024MB 并减少了 max_connections = 50。

这有帮助,但我经常遇到一个问题,即找不到准备好的 PDO 语句:

  • 可能是因为 pgbouncer 切换了 prepare() 和 execute() 之间的连接。

我无法将 pgbouncer 切换到会话模式 - 我的网站将挂起。

我尝试添加PDO::ATTR_EMULATE_PREPARES => true - 我的网站也挂起。

我在每个 prepare() 和 execute() 调用周围添加了 beginTransaction() 和 commit() - 但是我经常收到以下错误:

下面是我的代码因该错误而失败的摘录 - 它非常简单,只需调用五个 SELECT 语句:

请问有什么帮助吗?亚历克斯

0 投票
5 回答
20329 浏览

java - Postgres - 错误:准备好的语句“S_1”已经存在

通过 JDBC 对 pgbouncer 执行批处理查询时,出现以下错误:

我在网上发现了错误报告,但它们似乎都处理 Postgres 8.3 或更低版本,而我们正在使用 Postgres 9。

这是触发错误的代码:

有人见过这个吗?

编辑1:

事实证明,这是一个 pgBouncer 问题,在使用会话池以外的任何东西时会发生。我们使用的是事务池,它显然不支持准备好的语句。通过切换到会话池,我们解决了这个问题。

不幸的是,这对我们的用例来说不是一个好的解决方案。我们对 pgBouncer 有两种不同的用途:我们系统的一部分进行批量更新,这作为准备好的语句最有效,另一部分需要非常快速的连续连接。由于 pgBouncer 不允许在session poolingtransaction pooling之间来回切换,我们被迫在不同的端口上运行两个单独的实例来满足我们的需求。

编辑2:

我遇到了这个链接,海报已经滚动了他自己的补丁。如果它被证明是安全有效的,我们目前正在考虑实施它以供我们自己使用。

0 投票
1 回答
3156 浏览

python - psycopg2 + pgbouncer。带有 gevent 错误的异步模式

我有一个应用程序 psycopg2 + pgbouncer + gevent。异步应用,即一个进程服务多个请求。对数据库的异步访问出现在最新版本的 psycopg2 中,如果不是 2.2 的话。但只是在这个版本中引入了与 pgbouncer 有很多断开连接的错误。在 pgbouncer 日志中有条目:

也许有一些方法可以配置 pgbouncer,以避免有关不干净服务器的消息? 关于 bug 的信息,比如有一个补丁可以治愈某些东西。来自 ubuntu 存储库的所有软件包,在生产机器上应用补丁 - 这不是一个好的选择。我的配置 pgboucner:

0 投票
1 回答
1365 浏览

django - django 无法通过 pgbouncer 删除测试数据库

我在 Django 中使用 pgbouncer。我已将test_foo数据库添加到其配置中以便能够运行测试,因为显然 Django 不能为测试数据库使用不同的端口。现在测试运行,但最后,当 Django 尝试删除测试数据库时,我收到

我想这是由 pgbouncer 存储的开放连接引起的。我能做些什么?

0 投票
1 回答
5646 浏览

django - pgbouncer - 关闭,因为:每个连接上的服务器不干净

我正在使用 PostgreSQL 9.1/PostGIS 1.5、psycopg2 2.4.2 和 pgbouncer 1.4.2 运行 Django 1.3。

在与数据库的每个连接上,我都会在 pgbouncer.log 中获得一个日志条目:

2011-11-20 02:15:25.027 29538 LOG S-0x96c2200:app_db/postgres@192.168.171.185:5432 关闭,因为:服务器不干净(年龄=0)。

我找不到这个问题的任何解决方案 - 有人知道为什么吗?我尝试重新配置 pgbouncer(会话/事务模式、不同的超时等),但无济于事。

0 投票
2 回答
40000 浏览

python - pgBouncer 如何帮助加速 Django

我有一些基于 gevent 的管理命令。由于我的管理命令发出数千个请求,因此我可以使用 Gevent 将所有套接字调用转换为非阻塞调用。这确实加快了我的应用程序,因为我可以同时发出请求。

目前,我的应用程序的瓶颈似乎是 Postgres。这似乎是因为用于连接 Django 的 Psycopg 库是用 C 编写的,不支持异步连接。

我还读到使用 pgBouncer 可以将 Postgres 加速 2 倍。这听起来不错,但如果有人能解释 pgBouncer 如何工作和提供帮助,那就太好了?

谢谢

0 投票
1 回答
443 浏览

python - 您认为在 python 中创建数据映射层的最佳方法是什么?

我希望听到一些关于在一些 python 对象和 postgres 数据库之间创建轻量级数据映射层的最佳方法的意见。我正在使用 psycopg2 库,并计划使用 pgbouncer。我看了这个:http ://codeinthehole.com/writing/domain-model-mapper-a-php-data-mapper-implementation/的基本想法,但不清楚他们是如何关闭连接之后查询。我正在构建的组件类似于论坛,因为它有您熟悉的用户、帖子、论坛表格等。

0 投票
1 回答
12504 浏览

postgresql - 使用带有 pgbouncer 的事务池有什么好处?

我无法很好地总结使用 pgbouncer 进行事务池与会话池的优缺点。

这是否意味着事务繁重的工作负载以某种方式更好地负载平衡?是为了防止从 pgbouncer 连接到数据库需要尽可能多的连接吗?

0 投票
1 回答
3162 浏览

postgresql - 你怎么知道 PGBouncer 是否在工作?

我已经设置了 PGBouncer 并将其配置为连接到我的 postgres 数据库,并且一切都连接得很好,但是我不确定它是否真的有效。

我有一个 php 脚本,它作为守护进程运行并获取 beanstalk 作业。问题是对于系统上的每个不同的用户/操作,它都会打开一个与 postgres 的新连接,然后使该连接处于空闲状态,因为守护程序实际上并未停止运行,因此连接永远不会终止(对此的快速解决方法是重置脚本循环结束时的连接,但是对于许多连接来说效率很低)。

无论如何,这导致 postgres 最终耗尽连接并锁定......

所以 PGBouncer 似乎是答案。

但是现在当我运行它时,我在执行 ps ax | 时多次看到相同的数据库连接。grep postgres。

PGBouncer 不应该只打开 1 个连接到数据库并通过该连接路由所有流量吗?然后打开一个新连接,如果那个连接已满?

目前我有 3 个用于一个数据库连接(我的访问控制系统)和 2 个用于另一个数据库(我的客户端特定数据)。

对我来说,感觉就像如果我推出这些更改,那么我将面临同样的问题,即连接将再次被吃掉,因为它们没有被释放。

我希望这足以解释某人提供任何建议。

0 投票
1 回答
2468 浏览

postgresql - pgbouncer 端口与 db 端口

我将 PostgreSQL 与 php 一起使用。过了一会儿,客户端连接变大了,所以我尝试使用 pgbouncer 设置最大连接等。我的数据库端口是 5432,我所有的 php 都使用该端口连接到我的数据库。我的问题是,如果我使用相同的端口 5432 并设置为 pgbouncer 监听端口怎么办?所以我的数据库和 pgbouncer 使用相同的端口,所以我不必更改客户端代码。谢谢