我们有 2 个应用程序,每个应用程序约有 10 个实例。所有这些实例都连接到同一个 Postgres 数据库。
应用程序使用客户端池(一些应用 ORM 在本地提供连接池)
我们计划安装 PgBouncer (一个为所有)。
- 这对于演出来说是一个好的计划吗?
- 安装 PgBouncer 时可以删除应用程序连接池吗?
我们有 2 个应用程序,每个应用程序约有 10 个实例。所有这些实例都连接到同一个 Postgres 数据库。
应用程序使用客户端池(一些应用 ORM 在本地提供连接池)
我们计划安装 PgBouncer (一个为所有)。
由于您有多个应用程序实例,因此在数据库端使用池化绝对是个好主意。所有 20 个应用程序实例都可以在数据库中有效地池化,重用服务器 (DB) 连接。但是我建议
load balancing
机制(或类似工具HAproxy
)pgbouncer
来避免单点故障。它们必须peered
在一起transaction pooling
如果您的应用程序不使用会话级功能,请使用有效池。我认为使用应用层池来保持与 pgbouncer 的连接处于活动状态是可以的。
除非 pgbouncer 有助于解决某些问题,否则您不应添加它。它只是需要配置、中断和增加延迟的另一件事。您没有描述 pgbouncer 可能解决的任何问题。
应用程序是进行池化最有效的地方。如果它已经存在,你不应该仅仅因为你还使用 pgbouncer 而删除它(同样,你无论如何都不应该这样做)。如果应用程序池导致一些问题,情况会有所不同,但你没有描述任何问题。