问题描述
我有一个具有以下配置的数据库和用户对。为 pgbouncer 设置默认池大小时我很困惑。谁能解释一下它是怎么回事?
我为数据库设置了 300 个 max_connection。核心数为 0 作为其在云上的共享 cpu。
pool_mode = transaction
max_client_conn = 600
server_idle_timeout = 10
server_lifetime = 3600
query_wait_timeout = 120
default_pool_size = ??
解决方法
default_pool_size
是一个连接池中可以包含的数据库连接数。对于事务池,这将是每个数据库和用户的并发事务限制。
您应该将限制设置得足够小,以免造成数据库过载的危险。如果您的事务没有空闲时间,这意味着不允许超过您可以处理的内核数或并发 I/O 请求数的数据库会话数。
关于您的设置的附加说明:
-
server_idle_timeout = 10
:这太小了。连接池的全部意义在于保持这些会话处于打开状态。 -
max_connections = 300
非常高。确保您实际上拥有更少的连接。