数据库连接池的基本配置

项目中遇到了这个错误:

May 26, 2021 6:32:57 AM org.apache.tomcat.jdbc.pool.PooledConnection clearWarnings
WARNING: Unable to clear Warnings, connection will be closed.
java.sql.SQLException: Connection.clearWarnings cannot be called on a closed connection

显示的拿到了已经关闭了的连接,因为这个项目是定时跑任务的,所以连接在很长时间没用到,自动关闭了;这边需要重新配置下连接池;

常用配置

spring.datasource.tomcat.max-idle=20
spring.datasource.tomcat.min-idle=5
spring.datasource.tomcat.max-active=20
spring.datasource.tomcat.test-while-idle=true
spring.datasource.tomcat.test-on-borrow=true
spring.datasource.tomcat.validation-query=SELECT 'x'

为了性能考虑,将testWhileIdle 配置为true即可,其它的两种都是再用到连接的时候去验证是否有效,降低性能;不过这个项目对性能要求不高,所以设置test-on-borrow=true

参数详解:

defaultAutoCommit: 对于事务是否 autoCommit, 默认值为 true  
defaultReadOnly: 对于数据库是否只能读取, 默认值为 false  
maxActive: 可以从对象池中取出的对象最大个数,为0则表示没有限制,默认为8  
maxIdle: 最大等待连接中的数量,设 0 为没有限制 (对象池中对象最大个数)  
minIdle:对象池中对象最小个数  
maxWait: 最大等待秒数, 单位为 ms, 超过时间会丟出错误信息,-1为无限制
validationQuery: 验证连接是否成功, SQL SELECT 指令至少要返回一行  
removeAbandoned: 是否自我中断, 默认是 false  
removeAbandonedTimeout: 几秒后会自我中断, removeAbandoned 必须为 true  
logAbandoned: 是否记录中断事件, 默认为 false  
minEvictableIdleTimeMillis:大于0 ,进行连接空闲时间判断,或为0,对空闲的连接不进行验证;默认30分钟  
timeBetweenEvictionRunsMillis:失效检查线程运行时间间隔,如果小于等于0,不会启动检查线程,默认-1  

testOnBorrow:取得对象时是否进行验证,检查对象是否有效,默认为false  
testOnReturn:返回对象时是否进行验证,检查对象是否有效,默认为false  
testWhileIdle:空闲时是否进行验证,检查对象是否有效,默认为false  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值