gpt4 book ai didi

java - tomcat 7中的连接池

转载 作者:行者123 更新时间:2023-11-28 22:13:04 26 4
gpt4 key购买 nike

这是我当前的配置

 <Resource
name="jdbc/data"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/TABLE_NAME"
username="USER_NAME"
password="PASSWORD"
initialSize="10"
maxActive="50"
suspectTimeout="120"
minIdle="10"
maxIdle="20"
maxWait="1000"
testOnBorrow="true"
timeBetweenEvictionRunsMillis="30000"
minEvictableIdleTimeMillis="60000"
validationQuery="SELECT 1 FROM DUAL"
validationInterval="40"
removeAbandoned="true"
removeAbandonedTimeout="100"
/>

这是在全局上下文中,因此多个应用程序可以使用它。我对参数有点困惑。需要一些细节。我的理解是

initalSize 池启动时创建的连接数。

maxActive 一次最多可以激活 50 个连接。

minIdle 10 个连接在未使用时保持空闲,否则在 maxwait

后关闭

maxIdle 20 个连接可以存储为空闲。

但是当我启动 tomcat 服务器时,我可以看到 30 个 IDLE 连接永远保持不变。为什么会发生这种情况?我错过了什么吗?根据我对连接池的理解,应该只创建 10 个连接并且可以保持空闲模式。我对mysql my.cnf

有什么具体的改变吗

最佳答案

当你说...

This is in global context so multiple apps can use it.

具体是什么意思?它是在 GlobalNamingResources block 中的 $CATALINA_BASE/conf/server.xml 中还是在 $CATALINA_BASE/conf/context.xml 中?

中定义一个 Resource 标签 GlobalNamingResources $CATALINA_BASE/conf/server.xml block 将导致在整个服务器上只创建一个资源。然后可以通过添加 ResourceLink 将其共享到系统上部署的应用程序 标记到 Context 配置。

$CATALINA_BASE/conf/context.xml 中定义资源 将为部署到您的Tomcat 实例的每个应用程序定义一次资源。因此,如果您部署了三个应用程序,您最终将拥有三个独立的资源。这是一个猜测,但可能是您看到 30 个数据库服务器连接的原因。

关于java - tomcat 7中的连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23150251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com