为什么我的 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"