为什么我的 Tomcat 9 没有像 minIdle 中指定的那样保持 jdbc 连接打开?
Why my Tomcat 9 does not keep the jdbc connections open as it is specified in minIdle?
我已将我的 Tomcat 9 配置为使用 server.xml 保留数据库池,以便与我的 mysql 数据库建立至少 50 个连接。当 tomcat 启动时,我可以使用 SHOW PROCESSLIST 命令看到那里的所有连接。我不明白为什么几天后我只看到 8 个连接。
这是我的配置。我包含了名称随着不同 tomcat 版本而改变的参数,例如 maxActive 和 maxTotal,以确保采用参数值。
<Resource
name="MySqlDS"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
url="jdbc:mysql://localhost:3306/MYDB?zeroDateTimeBehavior=convertToNull"
username=*****
password=*****
initialSize="50"
maxActive="100"
maxTotal="100"
minIdle="50"
maxIdle="100"
maxWaitMillis="10000"
maxWait="10000"
maxAge="0"
minEvictableIdleTimeMillis="60000"
timeBetweenEvictionRunsMillis="30000"
suspectTimeout="60"
validationQuery="SELECT 1"
validationInterval="30000"
testOnBorrow="true"
removeAbandoned="true"
removeAbandonedOnBorrow="true"
removeAbandonedOnMaintenance="true"
removeAbandonedTimeout="60"
logAbandoned="true"
/>
会发生什么?是我配置错了吗?
我使用 mysql-connector-java-5.1.13 和 OpenJDK 1.8.0_275
我通过添加这个参数解决了这个问题:
testWhileIdle="true"
我已将我的 Tomcat 9 配置为使用 server.xml 保留数据库池,以便与我的 mysql 数据库建立至少 50 个连接。当 tomcat 启动时,我可以使用 SHOW PROCESSLIST 命令看到那里的所有连接。我不明白为什么几天后我只看到 8 个连接。
这是我的配置。我包含了名称随着不同 tomcat 版本而改变的参数,例如 maxActive 和 maxTotal,以确保采用参数值。
<Resource
name="MySqlDS"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
url="jdbc:mysql://localhost:3306/MYDB?zeroDateTimeBehavior=convertToNull"
username=*****
password=*****
initialSize="50"
maxActive="100"
maxTotal="100"
minIdle="50"
maxIdle="100"
maxWaitMillis="10000"
maxWait="10000"
maxAge="0"
minEvictableIdleTimeMillis="60000"
timeBetweenEvictionRunsMillis="30000"
suspectTimeout="60"
validationQuery="SELECT 1"
validationInterval="30000"
testOnBorrow="true"
removeAbandoned="true"
removeAbandonedOnBorrow="true"
removeAbandonedOnMaintenance="true"
removeAbandonedTimeout="60"
logAbandoned="true"
/>
会发生什么?是我配置错了吗?
我使用 mysql-connector-java-5.1.13 和 OpenJDK 1.8.0_275
我通过添加这个参数解决了这个问题:
testWhileIdle="true"