我在wildfy上部署了两个Spring Boot应用程序。在每个应用程序中使用hikaricp,最大池大小为20。在高负载下,我看到我的第一个应用程序使用了池中的所有连接(活动计数20),第二个应用程序仅使用4(活动计数4),但是当第二个应用程序尝试使用获得连接它有一个例外:连接不可用,请求在30000ms后超时。第二个应用程序是否可能尝试从第一个应用程序cp获得连接?!
我将考虑两种情况并分享我所知道的:
如果您在应用程序服务器中具有通用的连接池定义,那么请确保两个应用程序共享该连接池。
注意:虽然在我看来不是这样,因为我不确定您的部署体系结构。因此,让我们看看下一种可能性。
一个应用程序不能访问或受另一应用程序的连接池限制。
尽管可能发生的情况是您用尽了[[物理数据库连接]]-应用程序级别的连接池打开了与数据库的物理连接。您的应用程序的两个连接池都在执行此操作。每个数据库系统都有一个配置,该配置可设置最大(物理)连接限制-客户端一次可以与数据库建立多少物理连接。例如,在MySQL中,您可以找到并修改max_connections
配置参数,如here所示。
可以找到一些有关物理连接和逻辑连接的信息here。