4

许多应用程序服务器都集成了连接池,甚至可以将独立应用程序配置为使用 HikariCP、Apache DBCP 等。

那么当应用程序已经有连接池时,使用 PgBouncer 有什么好处呢?

我找到的最接近的答案是使用带有 pgbouncer 的事务池有什么好处?其中没有提到使用另一个连接池,并提到优点是空闲会话的使用。

我主要使用配置了最小池大小、最大池大小、空闲超时的 WildFly……所以它基本上会在空闲连接不使用时删除它们(如果这是主要优势)。

这让我觉得 PgBouncer 不适合这种情况,我应该只继续使用我的应用程序服务器连接池。

顺便说一句,在事务池模式下,PgBouncer 不能使用命名的预处理语句,这看起来不像是性能明智的选择。

如果有任何优势,它是否与wildfly连接池配合得很好?

4

1 回答 1

4

如果你的应用服务器包含一个连接池,并且只有一个应用服务器连接到数据库,那么最好使用集成连接池。

在这种情况下,pgBouncer 只是一个额外的组件,使架构更加复杂,并且您将拥有应用程序服务器和 pgBouncer 之间所有连接的额外开销。

如果有多个应用服务器连接到同一个数据库,问题就不再那么简单了。如果只有两个或三个应用程序服务器,那么没有 pgBouncer 可能会过得很好。

连接到数据库服务器的应用程序服务器越多,您将拥有的数据库连接越多,这会使数据库处于危险之中:如果这些连接中有太多同时变得繁忙,您的数据库性能和响应时间将会下降,因为数据库过载。在这种情况下,pgBouncer 将通过限制与数据库的活动连接数来提供帮助。

于 2017-05-11T08:21:38.050 回答