PgBouncer与WildFly / Application Server连接池的优势?

时间:2017-05-10 22:08:24

标签: java postgresql jdbc wildfly pgbouncer

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

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

我发现最接近的答案是What are advantages of using transaction pooling with pgbouncer?,它没有提到使用另一个连接池,并提到优势是空闲会话的使用。

我主要使用配置了最小池大小,最大池大小,空闲超时的WildFly ......因此它在不使用时基本上删除了空闲连接(如果它是主要优点)。

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

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

如果有任何优势,那么它是否可以与wildfly连接池一起使用?

1 个答案:

答案 0 :(得分:2)

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

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

如果有多个应用程序服务器连接到同一个数据库,问题就不再那么简单了。如果只有两个或三个应用程序服务器,那么没有pgBouncer就可以正常生活。

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