【发布时间】:2019-12-30 07:20:14
【问题描述】:
我使用 c3p0 作为 Java 8 应用程序的连接池以及 ibatis 作为 ORM 工具。数据库经常出现连接超时问题。以下是配置参数。
<property name="minPoolSize" value="60" />
<property name="maxPoolSize" value="200" />
<property name="initialPoolSize" value="60" />
<property name="statementCacheNumDeferredCloseThreads" value="1" />
<property name="acquireRetryAttempts" value="2"/>
<property name="checkoutTimeout" value="2000" />
<property name="debugUnreturnedConnectionStackTraces" value="true"/>
<property name="maxIdleTime" value="120"/>
<property name="autoCommitOnClose" value="false" />
<property name="testConnectionOnCheckin" value="true" />
<property name="numHelperThreads" value="3" />
这里是堆栈跟踪:
原因:java.sql.SQLException:客户端检出连接的尝试已超时。 在 com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118) 在 com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:77) 在 com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:690) 在 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140) 在 org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:138) 在 org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:60) 在 org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:336) 在 org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:84) 在 org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49) 在 org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) 在 org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) 在 org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:198) ... 9 更多 原因:com.mchange.v2.resourcepool.TimeoutException:客户端在等待从 com.mchange.v2.resourcepool.BasicResourcePool@501edcf1 获取资源时超时——在 awaitAvailable() 处超时 在 com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1467) 在 com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:644) 在 com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:554) 在 com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:758) 在 com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:685)
... 18 个以上
配置有什么问题或者我该如何解决这个问题?
【问题讨论】:
-
另外,请确保您没有在任何其他例程中关闭连接。
标签: java-8 connection-pooling c3p0 ibatis