【发布时间】:2020-07-21 20:43:44
【问题描述】:
为什么我在使用 PgBouncer 时要减少 PostgreSQL 中的 max_connections?当我使用 PgBouncer 限制以下连接时,如果我在 PostgreSQL 的配置中将 max_connections 设置为 100 或 1000,会有区别吗?
【问题讨论】:
标签: postgresql pgbouncer
为什么我在使用 PgBouncer 时要减少 PostgreSQL 中的 max_connections?当我使用 PgBouncer 限制以下连接时,如果我在 PostgreSQL 的配置中将 max_connections 设置为 100 或 1000,会有区别吗?
【问题讨论】:
标签: postgresql pgbouncer
每个可能的连接都会在共享内存中保留一些资源,并且一些后端私有内存也被缩放到它。在永远不会使用时保留此内存是一种资源浪费。在过去,当共享内存资源比在现代操作系统上更加繁琐时,这更是一个问题。
此外,有一些代码需要遍历所有这些资源,可能同时持有锁,因此如果有更多数据需要遍历,则需要更多时间。迭代和锁定的确切性质因版本而异,因为代码经过优化以使其更适合大量 CPU。
当大多数可能的连接都没有实际使用时,这些影响都不会很大。降低 max_connections 的最重要原因可能是为了在 pgbouncer 配置错误并且无法正常工作的情况下获得即时诊断。
【讨论】: