druid数据库连接池常用配置

本文详细介绍了Druid连接池的常用配置参数及其实际应用,并探讨了这些参数如何与MySQL数据库的wait_timeout参数相互作用,确保连接的有效性和及时回收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

druid连接池常用的几个配置参数

配置项推荐配置含义备注
initialSize3初始化连接池大小
minIdle3最小连接数
maxActive15最大连接数
maxWait6000获取连接时超时时间(单位:ms)
testOnBorrowfalse获取连接检测
testOnReturnfalse归还连接检测
testWhileIdletrue在获取连接后,确定是否要检测连接健康度
timeBetweenEvictionRunsMillis90000定时调度收缩连接池,时间间隔(单位:ms)
minEvictableIdleTimeMillis1800000可回收的最小空闲时间(单位ms)
keepAlivetrue连接池中的连接保活

结合实际场景,解释下这几个参数

  1. 数据库连接池获取连接时,如果testWhileIdle为true,会比较idleMills>timeBetweenEvictionRunsMills,来决定是否进行校验链接是否可用(所以保证timeBetweenEvictionRunsMills小于数据库的wait_timeout时间至关重要,否则 last package。。。)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 20,820,001 milliseconds ago.  The last packet sent successfully to the server was 20,820,002 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
		at sun.reflect.GeneratedConstructorAccessor29.newInstance(Unknown Source) ~[na:na]
	
  1. 另外,DruidDatasource在初始化时启动定时任务,定时运行porid(timeBetweenEvictionRunsMillis )时运行,进行连接池收缩和检测;
  2. 定时任务运行时,如果keepAlive为true,则会进行保活动作,保证数据库连接正常。

聊一下mysql数据库的wait_timeout参数

  1. 对于非交互式查询,连接在wait_timeout时间内没有请求,则该连接会被数据库服务器释放
  2. 关于交互式查询和非交互式查询,wait_timeout和interactive_timeout的区别,这里不做过多解释,请查看文档:https://blog.youkuaiyun.com/weixin_33834075/article/details/89533816;对于广大开发人员来讲,关注wait_timeout就可以了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值