连接未释放回tomcat jdbc池

时间:2019-02-27 16:31:43

标签: java hibernate connection-pooling grails-2.5 tomcat-jdbc

我有一个基于grails2的应用程序,该应用程序正在使用tomcat jdbc池,最近我遇到了一个问题,该池中的所有连接都用光了,我开始变得:-

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.apache.tomcat.jdbc.pool.PoolExhaustedException: [http-nio-8443-exec-38] Timeout: Pool empty. Unable to fetch a connection in 10 seconds, none available[size:100; busy:100; idle:0; lastwait:10000].; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.apache.tomcat.jdbc.pool.PoolExhaustedException: [http-nio-8443-exec-38] Timeout: Pool empty. Unable to fetch a connection in 10 seconds, none available[size:100; busy:100; idle:0; lastwait:10000].

我有一些需要大量连接的查询,还有一些存储过程会执行大约2-3分钟,因为它是我从数据源bean中手动获得的连接:-

currentConnection = dataSource.connection
sqlInstance = new Sql(currentConnection)
sqlInstance.execute(query)
sqlInstance.close()

我已经在stdout中记录了总的活动连接,我看到没有。的活动连接数不断增加,并且从未下降,然后上升到100,这是允许的总活动连接数,然后我开始收到poolexhaustauion的问题,有人可以给我一个主意,我可能会丢失什么,或者在哪里连接可能正在泄漏。这是我的连接详细信息:-

dataSource {
    pooled = true
    driverClassName = "com.mysql.jdbc.Driver"
    url="jdbc:mysql://something:3306/something?zeroDateTimeBehavior=convertToNull&autoReconnect=true&relaxAutoCommit=true"
    username="#####"
    password='#$#$$$$$$$'
    dbCreate = "update" 
    properties {
        initialSize=5
        maxActive=100
        minIdle=5
        maxIdle=25
        maxWait = 10000
        maxAge = 10 * 60000
        timeBetweenEvictionRunsMillis=5000
        minEvictableIdleTimeMillis=60000
        validationQuery="SELECT 1"
        validationInterval=15000
        testWhileIdle=true
        testOnBorrow=true
        testOnReturn=true
        removeAbandoned=true
        removeAbandonedTimeout=400
        logAbandoned=true
        jdbcInterceptors = "ConnectionState"
        defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED
    }
}

0 个答案:

没有答案