【问题标题】:tomcat jdbc pool max active not working?tomcat jdbc pool max active 不工作?
【发布时间】:2014-10-15 00:38:45
【问题描述】:

我为应用程序使用spring jdbc模板..并将其部署在tomcat中..我想将连接池与tomcat jdbc一起使用。我的连接配置是

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" value="jdbc:mysql://localhost:3310/mydb" /> 
    <property name="username" value="***" /> 
    <property name="password" value="***" /> 
    <property name="maxWait" value="10000" />
    <property name="removeAbandonedTimeout" value="60" />
    <property name="removeAbandoned" value="true" />
    <property name="logAbandoned" value="false" />
    <property name="initialSize" value="10" /> 
    <property name="maxActive" value="100" /> 
    <property name="minIdle" value="10" /> 
</bean> 

我不知道怎么回事,但是当我运行一些测试并检查mysql中的最大线程时,它显示活动线程超过了配置中配置的maxActive。那么,为什么配置中的 maxActive 不起作用?以及如何让它发挥作用?例如,maxActive 是 100,但是当我在 mysql 中签入时,活动线程超过了 maxActive。

【问题讨论】:

    标签: java mysql spring tomcat


    【解决方案1】:

    我遇到了同样的问题,我的 tomcat 版本是 tomcat 9

    这是我的解决方案:您应该将 ma​​xTotal 值设置为 100 而不是 ma​​xActive

    maxTotal:池中的最大数据库连接数。确保将 mysqld max_connections 配置为足够大以处理所有数据库连接。设置为 -1 表示没有限制。

    来自 http://tomcat.apache.org/tomcat-9.0-doc/jndi-datasource-examples-howto.html.

    【讨论】:

      【解决方案2】:

      maxActive (int) 最大活动连接数 同时从该池中分配。默认值为 100

      maxIdle (int) 应保持的最大连接数 在任何时候都在游泳池。默认值为 maxActive:100 空闲连接 定期检查(如果启用)和空闲的连接 超过 minEvictableIdleTimeMillis 的时间将被释放。 (另见 testWhileIdle)

      所以我也应该推荐你使用 maxIdle,例如:

      <property name="maxIdle" value="100">
      

      但也许有问题,如果你能显示你的连接管理的代码,那会很有帮助。

      这里有一个关于 Spring 的声明式和程序化事务管理的连接问题的有趣链接:Connection pool problem with Spring and programmatic transaction management

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-26
        • 1970-01-01
        • 2014-09-14
        • 1970-01-01
        • 1970-01-01
        • 2014-02-24
        相关资源
        最近更新 更多