繁体   English   中英

tomcat jdbc pool max active 不工作?

[英]tomcat jdbc pool max active not working?

我使用 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 多。

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

我和你有同样的问题,我的 tomcat 版本是tomcat 9

这是我的解决方案:您应该将maxTotal值设置100 而不是maxActive

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM