这是一个配置,我使用它将资源保持最小。当然,你会想要定制你的应用程序来使用它需要的资源…
> testConnectionOnCheckin在连接返回到池时验证连接。 testConnectionOnCheckOut,虽然会确保活动连接在使用前,会太贵。
> idleConnectionTestPeriod设置连接在测试之前保持空闲的时间长度的限制。没有preferredTestQuery,默认是DatabaseMetaData.getTables() – 这是数据库不可知,虽然相对昂贵的调用,对于相对较小的数据库可能是好的。如果您对性能有偏见,请使用特定于您的数据库的查询(即preferredTestQuery =“SELECT 1”)
> maxIdleTimeExcessConnections将在活动中出现尖峰后将connectionCount恢复为minPoolSize。
以下配置集poolize在3-20之间。空闲连接每5分钟重新测试一次,以保持活动状态。由于idleConnectionTestPeriod,这将只保持最小连接数活动。如果在4分钟标记处有超过3个连接,则它会将那些连接释放回最小值。
使用maxIdleTimeExcessConnections和idleConnectionTestPeriod可以不需要maxIdleTime
auth="Container" factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"
user="myuser" password="******"
minPoolSize="3"
maxPoolSize="20"
acquireIncrement="1"
driverClass="com.mysql.jdbc.Driver"
jdbcUrl="jdbc:mysql://localhost:3306/mydb"
testConnectionOnCheckin="true"
idleConnectionTestPeriod="300"
maxIdleTimeExcessConnections="240"
/>