0

我试图了解数据库连接池中的特定场景。对此的任何指示都会非常有帮助。

设置

  1. Tomcat 网络服务器
  2. MySQL 服务器(最大连接数 = 18)

webapp 的配置: webapp
context.xml 具有用于数据库连接池的以下参数:

<Context path=...
   <Resource name=... maxActive="20" maxIdle="18" 
    removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true"
    validationQuery="select 1" testOnBorrow="true"... />
</Context>

场景
webapp 打开和关闭很多连接。但是,当 webapp 不再与 dB 进行交易时,池会保留其中的 18 个(maxIdle=18)。
现在此时,一个单独的 Pure Java 独立应用程序请求数据库连接。MySQL 服务器将如何响应?

  1. 它会通过关闭池中的空闲连接来提供连接吗?
  2. 它会拒绝连接,因为最大 dB 连接数已经打开(由池持有)

如果我对场景不清楚,请告诉我,我会进一步澄清。

干杯,罗希特什

4

2 回答 2

1

数据库服务器不知道打开的连接是否来自池。对于数据库服务器,它只是一个开放的连接,它永远不会主动关闭它。

于 2013-05-29T05:47:20.830 回答
1

池的连接限制与数据库的总连接限制无关。这只是该特定连接池的限制。只要未达到为您的服务器配置的总限制,其他应用程序就可以分配连接。

当然,拥有保持大量(空闲)连接打开的连接池意味着您可以更快地达到配置的服务器限制(MySQL 的默认值为 100)。

于 2013-05-29T06:10:54.680 回答