【问题标题】:Java application server connection pooling for different databases on same server同一服务器上不同数据库的 Java 应用程序服务器连接池
【发布时间】:2014-04-25 11:10:26
【问题描述】:

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

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

【问题讨论】:

    标签: java postgresql glassfish connection-pooling


    【解决方案1】:

    这听起来不是一个好习惯,因为您最好扩展原始服务器而不是使用两个数据库。在我看来,让两个数据库保持同步对于实际使用来说太麻烦了。

    要池化数据库连接,您可以使用 Apache Commons DBCP 等在生产环境中非常高效的实现。 但是,我从未尝试过同时使用两个这样的池。

    另一方面,您可以自己实现连接池,其中您将拥有一个用于 DB 的 Great pool,以及用于每个 DB 连接的子池。为此,您可以重用现有的池实现,例如 Apache Commons Pools。

    【讨论】:

      猜你喜欢
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 2020-05-26
      相关资源
      最近更新 更多