Owe*_*ing 3 postgresql pgbouncer postgresql-9.4
我将 PostgreSQL 与 PgBouncer 一起使用,并在我的应用程序中收到以下错误:
08P01:不允许更多连接(max_client_conn)
pgbouncer.ini 有以下配置:
max_client_conn = 100
default_pool_size = 20
pool_mode = session
Run Code Online (Sandbox Code Playgroud)
postgresql.conf 有:
max_connections = 100
Run Code Online (Sandbox Code Playgroud)
PostgreSQL 服务器有 5 个由单个用户访问的数据库。
我的理解是max_connections
应该等于(default_pool_size * # databases)
,并且max_client_conn
至少应该是这么多。我还看到 pgbouncer.ini 中的注释default_pool_size
应该等于max_client_conn
if using session pooling。
所以要解决我遇到的这个错误,我应该简单地设置default_pool_size = 100
吗?还是只增加max_client_conn
?或者是其他东西?
小智 8
使用 PGBouncer 的目的是让它汇集到 PG 服务器的连接。如果您的 PG max_connections = 100 和 PGBouncer max_client_conn = 100,那么您没有汇集任何东西。您应该将 PGBouncer max_client_conn 设置为更高的数字,以允许它编组实际的 PG 连接来为客户端提供服务。我已经看到 max_client_conn 设置为 default_pool_size * # databases * 用户计数 * 一些任意数字 (10) 以允许足够的 PGBouncer 连接为所有用户连接的所有数据库提供服务,并使用任意 (10) 连接倍数。例如,我有一个带有一个数据库的 PG 服务器,max_connections = 100,PGBouncer default_pool_size 为 20,PGBouncer max_client_conn = 1000。这有效地允许 PGBouncer 将 20 个连接集中到我的单个数据库,同时允许我的客户端 1000 个连接来处理它的数据。(我正在从 web api 实时捕获大量数据)。