我一直在尝试配置PgPool接受大约150的请求.Postgres服务器配置为只接受100个连接.超过100的任何东西都需要由PgPool汇集.我似乎没有那样做.我只需要PgPool对请求进行排队,我当前的配置不会这样做.从我的JMeter测试中,当我尝试连接超过100时,postgres给出了一个错误,说PSQL错误:sorry, too many clients
.
我只使用以下参数配置了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
Run Code Online (Sandbox Code Playgroud)
由于我只需要PgPool来排队额外的连接请求,上面的配置是否正确?请告知正确的配置.
小智 5
pgpool中的'child_max_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次关闭并重新打开一次.
首先要弄清楚您想要的最大池大小是多少。当最大活动连接数约为 ((2 * 核心数) + 有效主轴数) 时,PostgreSQL 性能(无论是吞吐量还是延迟)通常是最佳的。有效轴计数可能很难计算——例如,如果您的活动数据集已完全缓存,请将其计为零。不要将超线程中的任何额外线程计为此计算的核心。另请注意,由于网络延迟问题,您可能需要一个比计算数量稍大的池来保持该数量的活动连接。您可能需要进行一些基准测试来找到适合您的硬件和工作负载的最佳位置。
您需要调整的设置是child_max_connections
,并num_init_children
保持小于或等于该值。
归档时间: |
|
查看次数: |
10940 次 |
最近记录: |