首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >良好的PgPool II配置

良好的PgPool II配置
EN

Stack Overflow用户
提问于 2012-04-28 16:52:32
回答 2查看 12.1K关注 0票数 6

我一直在尝试将PgPool配置为接受大约150个请求。Postgres服务器配置为仅接受100个连接。任何超过100的数据都需要由PgPool进行池化。我好像不太明白。我只需要PgPool来对请求进行排队,而我当前的配置不能做到这一点。从我的JMeter测试中,当我试图获得超过100的连接时,postgres给我一个错误,说PSQL error:sorry, too many clients

我只使用以下参数配置了PGPool:

代码语言:javascript
复制
listen_address = 'localhost'
port = 9999
backend_hostname0 = 'localhost'
backend_port0 = 5432
num_init_children = 100
max_pool = 4
child_life_time =120
child_max_connections = 0
connections_life_tome = 120
client_idle_limit = 0

由于我只需要PgPool来对额外的连接请求进行排队,那么上述配置是否正确?请建议正确的配置。

EN

回答 2

Stack Overflow用户

发布于 2013-07-22 20:07:37

pgpool中的'child_max_connections‘不是允许的到数据库的最大连接数。它是池连接在终止和重新启动之前可以使用的次数。它的存在是为了回收连接线程并阻止内存泄漏。

pgpool x num_init_children的公式描述了pgpool将建立到Postgresql的最大连接数。显然,这需要小于postgresql中设置的'max_connections‘,否则pgpool会将数据库标记为不可用的后端。如果您保留了一些供管理员使用的数据库连接,则需要进一步减少pgpool连接的数量。

所以,我要说的是,公式中的“max_connections”是在postgresql.conf中设置的参数。在上面的注释中将'child_max_connections‘设置为100只是意味着pgpool连接每使用100次就关闭并重新打开一次。

票数 5
EN

Stack Overflow用户

发布于 2012-04-29 03:05:31

第一件事是找出您想要的最大池大小。当最大活动连接数约为((2 *核心数)+有效轴计数)时,PostgreSQL性能(在吞吐量和延迟方面)通常最好。有效的磁盘轴计数可能很难计算--例如,如果活动数据集被完全缓存,则将其计算为零。不要将来自超线程的任何额外线程计算为此计算的核心。另请注意,由于网络延迟问题,您可能需要一个略大于计算数量的池来保持该数量的连接活动。您可能需要执行一些基准测试,以找到适合您的硬件和工作负载的最佳位置。

您需要调整的设置是child_max_connectionsnum_init_children保持小于或等于该值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10362032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档