同一服务器上不同数据库的Java应用程序服务器连接池

同一服务器上不同数据库的Java应用程序服务器连接池,java,postgresql,glassfish,connection-pooling,Java,Postgresql,Glassfish,Connection Pooling,我有几个java应用程序服务器glassfish 3.0运行不同的应用程序,每个应用程序都需要一个唯一的postgresql数据库,因此每个数据库都有一个不同的连接池。我的目标是提供一个主/从db服务器,使用被动从机实现冗余。问题是postgresql一方面在活动连接的数量上有一个非常小的最佳点,另一方面在所有1000个活动连接上有一个总体合理的限制。由于每个应用程序在高峰时间被更多用户访问,因此每个连接池本身必须包含50-100个连接,以防止应用程序因大量并行db io而锁定。数据库服务器的总

我有几个java应用程序服务器glassfish 3.0运行不同的应用程序,每个应用程序都需要一个唯一的postgresql数据库,因此每个数据库都有一个不同的连接池。我的目标是提供一个主/从db服务器,使用被动从机实现冗余。问题是postgresql一方面在活动连接的数量上有一个非常小的最佳点,另一方面在所有1000个活动连接上有一个总体合理的限制。由于每个应用程序在高峰时间被更多用户访问,因此每个连接池本身必须包含50-100个连接,以防止应用程序因大量并行db io而锁定。数据库服务器的总体负载相对较小,目前只需提供足够的连接即可。让这么多的连接打开,而大多数连接在大部分时间都处于空闲状态,这感觉是不对的


问题是,为所有应用程序提供池数据库访问的最佳方法是什么,同时为数据库提供回退冗余,并为每个应用程序提供足够的并行连接以应对峰值负载?

这听起来不是一个好做法,因为扩展原始服务器比使用两个DBs更好。在我看来,保持两个DBs同步对于实际应用来说太麻烦了

要共享数据库连接,可以使用ApacheCommonsDBCP等实现,这在生产上非常有效。 但是,我从未尝试将其中两个池结合使用

另一方面,您可以自己实现连接池,在这里,您将为DBs提供一个很棒的池,并为每个DB的连接提供子池。为此,您可以重用现有的池实现,例如apachecommons池