我正在尝试了解数据库连接池中的特定场景。对此的任何指示都会非常有帮助。
设置:
- Tomcat 网络服务器
- 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 打开和关闭了很多连接。但是,当 web 应用程序不再与 dB 进行交易时,池会保留其中的 18 个(因为 maxIdle=18)。
此时,一个单独的纯 Java 独立应用程序请求数据库连接。 MySQL 服务器将如何响应?
- 它会通过关闭池中持有的空闲连接来提供连接吗?
- 它是否会拒绝连接,因为最大数量的 dB 连接已经打开(由池持有)
如果我不清楚场景,请告诉我,我会进一步澄清。
干杯, 罗黑特什
最佳答案
数据库服务器不知道打开的连接是否来自池。对于数据库服务器来说,它只是一个打开的连接,它永远不会主动关闭它。
关于java - Tomcat 中的连接池 Scanario,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16806218/