【问题标题】:How to shrink DB Connection Pool?如何缩小数据库连接池?
【发布时间】:2009-07-06 05:05:06
【问题描述】:

我在我的 tomcat 容器中使用带有 JNDI 的 Apache DBCP 来汇集到 mysql 数据库的连接。一切正常,但我看到的一个问题是,一旦 pconnection 被汇集,它就永远不会被释放。因此,在负载尖峰连接之后,它们将永远处于休眠状态。他们是通过 context.xml 参数缩小池的方法吗?这是我的配置:

        defaultAutoCommit="false"
        defaultTransactionIsolation="REPEATABLE_READ"
        auth="Container"
        type="javax.sql.DataSource"
        logAbandoned="true" 
        removeAbandoned="true"
        removeAbandonedTimeout="300" 
        maxActive="-1"
        initialSize="15"
        maxIdle="10"
        maxWait="10000" 
        username="user"
        password="password"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost/mydb"/>

【问题讨论】:

    标签: java tomcat jndi connection-pooling apache-commons-dbcp


    【解决方案1】:

    尝试将minEvictableIdleTimeMillis 设置为低于默认值1000*60*30

    【讨论】:

    • 还需要设置以下属性:testWhileIdle、timeBetweenEvictionRunsMillis、validationQuery
    【解决方案2】:

    尝试使用c3p0连接池`~~

    【讨论】:

    • 确实比 DBCP 好,至少目前是这样。并且参数名称很容易理解。您的帖子不是试图解决手头的问题:)。无论如何+1
    【解决方案3】:

    在类似的情况下,我使用 Tomcat 的 JMX 适配器来调整连接池的设置。这可以用于增加和减少池的大小。因此,至少在生产环境中启用对 servlet 容器的 JMX 远程访问是一个好主意,以便有机会对异常操作情况做出反应。

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 2014-04-09
      相关资源
      最近更新 更多