【发布时间】:2012-05-30 03:51:25
【问题描述】:
我在 tomcat 6 上使用 tomcat pool。以下是我的资源定义:
<Resource name="jdbc/DBConnectionFactory"
auth="Container"
type="javax.sql.DataSource"
username="root"
password="root"
removeAbandoned="true"
removeAbandonedTimeout="600"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/sicad?autoReconnect=true"
minIdle="3"
maxActive="250"
testWhileIdle="true"
validationQuery="SELECT 1"
maxIdle="10"
timeBetweenEvictionRunsMillis="10000"
minEvictableIdleTimeMillis="10000"
maxWait="-1"
/>
现在,理想情况下,在达到 250 个连接后,应该删除所有空闲连接,或者至少通过某种方式 mysql 不应该给出太多连接错误。另外,请注意,如果我执行 showprocesslist,则几乎没有任何并发查询正在进行。所以我在想 timeBetweenEvictionRunsMillis 应该做删除空闲连接并保持池活动的技巧。但是一旦设置了 250 个连接,mysql 就会开始抛出太多连接错误。我期望 tomcat 池会从池中删除任何空闲连接,以保持池大小合理。另请注意,并不是要创建这么多。
更糟糕的是,同样的配置在开发机器和登台服务器 + 测试服务器上运行,但在产品服务器上却不行。所有机器也是彼此的克隆。我已经重启了机器,重新安装了 mysql,但一切都是徒劳的。
【问题讨论】:
-
在与从
DataSource获得连接的位置完全相同的try块的finally块中使用后,您是否关闭连接?
标签: java tomcat jdbc connection-pooling