Java tomcat池未重置池。获取太多连接时出错

Java tomcat池未重置池。获取太多连接时出错,java,tomcat,jdbc,connection-pooling,Java,Tomcat,Jdbc,Connection Pooling,我正在tomcat 6上使用tomcat池。以下是我的资源定义: <Resource name="jdbc/DBConnectionFactory" auth="Container" type="javax.sql.DataSource" username="root" password="root" removeAbandoned="true" removeAban

我正在tomcat 6上使用tomcat池。以下是我的资源定义:

 <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,但一切都是徒劳的。

是在全局或应用程序级别配置的吗?查看Mark Thomas关于将
context.xml
放在错误的位置如何创建超出预期的连接的文章。长话短说:

  • 如果在全局
    context.xml
    中配置池,则每个应用程序都有一个池
  • 如果在应用程序
    context.xml
    中配置池,则只会得到一个池
  • 如果希望在应用程序之间共享全局池,则必须使用

没有任何效果,最终放弃了硬件和相同的代码库,驱动程序和mysql安装正常。

您是否在从数据源获得连接的同一个
块的
finally
块中使用后关闭连接?这应该不是问题,因为我只有一个使用DB的web应用程序。