Postgresql 良好的PgPool II配置

Postgresql 良好的PgPool II配置,postgresql,pgpool,Postgresql,Pgpool,我一直在尝试将PgPool配置为接受大约150个请求。Postgres服务器配置为仅接受100个连接。任何超过100的项目都需要由PgPool进行汇总。我好像不明白。我只需要PgPool对请求进行排队,而我当前的配置没有这样做。从我的JMeter测试中,当我试图获得超过100的连接时,postgres会告诉我一个错误,说PSQL错误:对不起,太多客户端了 我仅使用以下参数配置了PGPool: listen_address = 'localhost' port = 9999 backend_hos

我一直在尝试将PgPool配置为接受大约150个请求。Postgres服务器配置为仅接受100个连接。任何超过100的项目都需要由PgPool进行汇总。我好像不明白。我只需要PgPool对请求进行排队,而我当前的配置没有这样做。从我的JMeter测试中,当我试图获得超过100的连接时,postgres会告诉我一个错误,说PSQL错误:
对不起,太多客户端了

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

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来排队等待额外的连接请求,所以上面的配置正确吗?
请建议正确的配置。

首先要确定您想要的最大池大小。当活动连接的最大数量大约为((2*内核数)+有效主轴数)时,PostgreSQL性能(吞吐量和延迟)通常是最好的。有效主轴计数可能很难计算——例如,如果活动数据集已完全缓存,则将其计为零。不要将超线程中的任何额外线程计算为此计算的核心。还请注意,由于网络延迟问题,您可能需要一个略大于计算数的池来保持该连接数处于活动状态。您可能需要进行一些基准测试,以找到硬件和工作负载的最佳点


您需要调整的设置是
child\u max\u connections
,其中
num\u init\u children
保持小于或等于该设置。

pgpool中的“child\u max\u connections”不是允许的到DB的最大连接数。它是池连接在终止和重新启动之前可以使用的次数。它是用来回收连接线程和阻止内存泄漏的

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


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

您是在应用程序中以pgpool实例为目标,而不是直接连接到Postgresql吗?我是通过pgpool端口9999连接到postgres服务器的jdbc:postgresql://localhost:9999/dbname?user=username&password=passwordofuser
2*芯数+有效主轴数??对于num_init_children参数?你能举个例子吗?我不确定我是否理解……假设你有一个四核处理器和超线程。这是四个核心,因此您最多可以从八个活动数据库连接中获益。假设您有一个用于存储数据的六驱动器RAID 10。如果已完全缓存,则可能不会添加任何内容,因为驱动器没有用于大量随机读取。如果您是磁盘绑定的,那么您可以将其计算为6个,即14个连接。如果部分缓存,则有效缓存大小可能介于两者之间。从这里开始,用您的工作负载测试稍大和稍小的池。PgPool wiki中的这句话对我很有帮助:-总之,max_pool、num_init_children、max_connections、superuser_reserved_connections必须满足以下公式:max_pool*num_init_children应该可以防止错误。然而,它比PostgreSQL能够有效使用的连接还要多。如果减少数据库连接的数量,您将能够以更好的吞吐量和更快的响应时间为更多的客户端提供服务。有些人觉得这是违反直觉的;我建议你在可能的时候测试一下不同尺寸的实际混音。我也在研究PgBouncer。。你推荐哪一个?以及如何配置多个数据库。?