【问题标题】:Apache DBCP2 connection pool open more MYSQL connection than maxTotal on Tomcat startupApache DBCP2 连接池在 Tomcat 启动时打开的 MYSQL 连接比 maxTotal 多
【发布时间】:2017-08-18 04:43:08
【问题描述】:

我已经在 Apache Tomcat 8.5.16 中配置了 Apache DBCP2 JNDI 数据源。我在 context.xml 中的资源标签如下所示。

<Resource auth="Container"
    type="javax.sql.DataSource" 
    driverClassName="com.mysql.cj.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/mydb?autoReconnect=true&amp;useSSL=false"
    username="root"
    password="mypassword"
    name="jdbc/myDS"
    initialSize="5"
    minIdle="5" 
    maxIdle="10"
    maxTotal="20"
    testOnCreate="true"
    testOnBorrow="true" 
    testOnReturn="true"
    testWhileIdle="true"
    validationQuery="SELECT 1 from dual"
    validationQueryTimeout="60"
    timeBetweenEvictionRunsMillis="180000"
    numTestsPerEvictionRun="10"
    softMinEvictableIdleTimeMillis="150000"
    maxConnLifetimeMillis="300000"
    logAbandoned="true"
    removeAbandonedOnBorrow="true"
    removeAbandonedOnMaintenance="true" 
    removeAbandonedTimeout="60"
    maxWaitMillis="60000" />

我的问题是:

  1. 我启动了 tomcat(我还没有在 tomcat 上部署任何应用程序)。我打开 MYSQL 客户端,以 root 身份登录。现在,当我运行命令 show processlist 时,我看到了 31 个连接。 1个来自MYSQL客户端,30个来自tomcat。为什么当我的 maxTotal 为 20 时 DBCP2 获得了 30 个连接?不,还有一个是使用 MYSQL,而不是 tomcat 和 MYSQL 客户端。
  2. 由于我没有在 tomcat 上部署任何应用程序来使用 JNDI 数据源,因此我从 DBCP2 的所有连接都是空闲的。 timeBetweenEvictionRunsMillis="180000" 不会删除这些空闲连接。
  3. 当我删除 minIdle="5"。然后在 180000 毫秒后,所有 30 个 MYSQL 连接都从连接池中删除,连接池大小变为零。

帮助我理解这种行为。谢谢是提前。

【问题讨论】:

    标签: java mysql tomcat


    【解决方案1】:

    对不起大家。这是我理解的错误。我使用的 Tomcat 8.5.16 在 webapps 目录中已经有 6 个应用程序(ROOT、文档、示例、主机管理器、管理器等)。由于我在 tomcat 的 conf 目录中的 context.xml 中创建了 Apache DBCP2 JNDI 数据源,因此 Tomcat 为 webapps 目录中的每个应用程序创建了 6 个具有 initialSize="5" 的连接池。我需要重新访问我的 JNDI 数据源配置,以便我可以将其限制为由 1 个应用程序使用。
    谢谢大家路过。

    【讨论】:

    • 好吧,只有当你 a) 需要那些默认应用程序(在生产中你可能不需要),b) 继续声明连接池在 context.xml 中,明确针对 所有 应用程序,并且 c) 关心打开一些非操作连接对性能的影响。
    猜你喜欢
    • 2010-12-24
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2016-05-02
    • 2012-04-02
    • 2023-04-06
    • 2017-07-23
    • 1970-01-01
    相关资源
    最近更新 更多