首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat集群环境中的JDBC连接池

Tomcat集群环境中的JDBC连接池
EN

Stack Overflow用户
提问于 2016-12-20 06:59:44
回答 1查看 1.1K关注 0票数 3

我对此还比较陌生,但我设置了一个Tomcat集群(使用httpd中的mod_proxy )和会话复制(单独的redis服务器),以实现容错。

关于这个设置,我有几个问题:

  1. 我的应用程序(spring/hibernate)每个用户都有不同的数据库。因此,这里的问题是数据源(使用spring和hibernate进行持久性)是在Tomcat级别创建的。因此,无论我做什么连接池,都将处于服务器级别。 根据集群配置,Tomcat实例将创建自己的连接池。 我想知道是否可以使用Tomcat在集群级别使用连接池,即是否有方法确保集群中的所有服务器都使用共享连接池?
  2. 由于性能问题,我不想在每个Tomcat实例上配置DataSource。在集群设置之前,应用程序是部署在单个服务器上的,并且DataSource被配置为只允许每个DataSource连接池中的几个(50)连接。 现在,在集群环境中,我不能在每个Tomcat上创建或拆分这些数量的连接,而且节点的动态注册也会造成进一步的问题。我还想知道,如果连接池不可能或效率低下,是否有其他解决方案来解决这个问题?
EN

回答 1

Stack Overflow用户

发布于 2016-12-21 23:25:08

我将用相反的顺序来处理你的问题,因为第二个问题更简单。

Tomcat中的数据库连接池不能在集群范围内配置:您必须为集群中的每个节点配置一个单独的池。但这不一定是坏消息。将节点配置为每个节点上的连接池中有5个、10个或100个连接没有任何问题。

的确,您可能最终会遇到这样一种情况:一次有太多用户连接到数据库,这会使数据库不堪重负,但这也可能发生在单个节点上。多个节点在概念上没有什么不同,对于单个节点也是如此。

关键是要确保集群适当地平衡用户,这样就没有限制,例如每个节点有5个数据库连接,但是100个用户最终在一个节点上,而其他节点每个节点只有5个用户。在这种情况下,流行的节点(100个用户)将不得不共享这5个连接,而在其他节点上,每个用户都得到一个连接到自己。

回到你的第一个项目,这是更复杂的。如果每个用户都有一个单独的数据库,那么连接池是不可能完成的,因为每次都必须为每个用户建立一个新的连接。这些连接是不可集合的,至少在没有非常小心的情况下也是如此。听起来,在确定该问题的技术解决方案之前,您可能需要解决一个体系结构问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41236543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档