[英]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.