【问题标题】:Can one application steal db connection from other?一个应用程序可以从其他应用程序窃取数据库连接吗?
【发布时间】:2020-02-28 21:39:42
【问题描述】:

我在 Wildfy 上部署了两个 Spring Boot 应用程序。在每个应用程序中使用 hikaricp,最大池大小为 20。在高负载时,我看到,我的第一个应用程序使用池中的所有连接(活动计数 20),第二个应用程序仅使用 4 个(活动计数 4),但是当第二个应用程序尝试获取连接它有一个异常:连接不可用,请求在 30000 毫秒后超时。第二个应用程序是否有可能尝试从第一个应用程序 cp 获取连接?!

【问题讨论】:

  • 否,但您的连接池可能会更大,或者您的第一个应用程序不会占用所有可用连接。

标签: java spring-boot wildfly hikaricp


【解决方案1】:

我会考虑两个案例并分享我所知道的:

  1. 同一应用服务器上的两个应用程序 (Wildfly)

如果您在应用程序服务器中有一个公共连接池定义,那么可以肯定的是,两个应用程序共享连接池。

注意:尽管在我看来情况并非如此,因为我不确定您的部署架构。那么,让我们看看下一个可能性。

  1. 独立连接池(独立服务器)上的每个应用程序

一个应用程序无法访问另一个应用程序的连接池或受其限制。

但可能发生的情况是您的物理数据库连接已用完 - 应用程序级别的连接池打开了与数据库的物理连接。您的应用程序的两个连接池都在这样做。每个数据库系统都有一个设置最大(物理)连接限制的配置 - 客户端一次可以与数据库建立多少物理连接。

例如,在 MySQL 中,您可以找到并修改 max_connections 配置参数,如 here 所示。

关于物理连接和逻辑连接的一些信息可以在here找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2014-06-19
    相关资源
    最近更新 更多