c3p0作为连接池,报:java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
网上查了很久,有人说是checkoutTimeout太短的原因,(Default: 0)于是由原来的1000改为2000,问题还是未解决。
然后找了份没有问题的配置作了些对比,发现我的maxPoolSize=100显得有些大,于是改为默认的15.再测试,居然没有问题了。后来再试了大一点的60,也没有问题。
下面是我的配置:
网上查了很久,有人说是checkoutTimeout太短的原因,(Default: 0)于是由原来的1000改为2000,问题还是未解决。
然后找了份没有问题的配置作了些对比,发现我的maxPoolSize=100显得有些大,于是改为默认的15.再测试,居然没有问题了。后来再试了大一点的60,也没有问题。
下面是我的配置:
- <bean id="dataSource"
- class="com.mchange.v2.c3p0.ComboPooledDataSource"
- destroy-method="close">
- <property name="driverClass" value="com.mysql.jdbc.Driver" />
- <property name="jdbcUrl"
- value="jdbc:mysql://localhost:3306/gjp" />
- <property name="user" value="root" />
- <property name="password" value="gjpgjp" />
- <property name="initialPoolSize" value="20" />
- <property name="minPoolSize" value="10" />
- <property name="maxPoolSize" value="60" />
- <property name="maxIdleTime" value="7200" />
- <property name="idleConnectionTestPeriod" value="360" />
- <property name="preferredTestQuery" value="select 1" />
- <property name="acquireIncrement" value="5" />
- <property name="acquireRetryAttempts" value="50" />
- <property name="acquireRetryDelay" value="1000" />
- <property name="breakAfterAcquireFailure" value="true" />
- <property name="checkoutTimeout" value="20000" />
- <property name="autoCommitOnClose" value="false" />
- <property name="forceIgnoreUnresolvedTransactions" value="false" />
- <property name="unreturnedConnectionTimeout" value="1000" />
- <property name="maxStatements" value="0" />
- <property name="maxStatementsPerConnection" value="0" />
- <property name="testConnectionOnCheckin" value="true" />
- <property name="testConnectionOnCheckout" value="false" />
- <property name="usesTraditionalReflectiveProxies" value="false" />
- <property name="numHelperThreads" value="5" />
- </bean>