druid数据库连接池物理连接超时时间phyTimeoutMills及物理最大连接数phyMaxUseCount

配置:

#物理超时时间,默认:-1
spring.emily.datasource.config.mysql.phy-timeout-millis=-1
#物理最大连接数,默认:-1(不建议配置)
spring.emily.datasource.config.mysql.phy-max-use-count=-1

phy-timeout-millis是指连接的最大物理连接时长,超过则会被强制回收,phy-max-use-count则是最大的物理连接数,超过则会被强制回收,这两个连接都要慎用;

phy-timeout-millis最大物理连接时长在源码中生效场景一:

com.alibaba.druid.pool.DruidDataSource#recycle回收方法,在连接操作完数据库后,回收连接的方法中判定:

#物理连接超时时间大于0
if (phyTimeoutMillis > 0) {
  //connectTimeMills是连接建立是的时间
  //当前连接的时长,如果大于最大物理连接时间,则丢弃连接
  long phyConnectTimeMillis = currentTimeMillis - holder.connectTimeMillis;
  if (phyConnectTimeMillis > phyTimeoutMillis) {
    discardConnection(holder);
    return;
  }
}
phy-timeout-millis最大物理连接时长在源码中生效场景二:

com.alibaba.druid.pool.DruidDataSource.DestroyTask守护线程的shrink方法中判定:

//当前连接的市场大于物理连接时长则丢弃连接
if (phyTimeoutMillis > 0) {
  long phyConnectTimeMillis = currentTimeMillis - connection.connectTimeMillis;
  if (phyConnectTimeMillis > phyTimeoutMillis) {
    evictConnections[evictCount++] = connection;
    continue;
  }
}
phy-max-use-count物理连接最大使用数量使用场景com.alibaba.druid.pool.DruidDataSource#recycle连接回收方法:

//物理连接数量大于0,并且当前连接使用的数量大于物理连接数量就会丢弃当前连接
if (phyMaxUseCount > 0 && holder.useCount >= phyMaxUseCount) {
discardConnection(holder);
return;
}

这两个属性配置都会损耗一定的性能,使用的时候慎重,不建议在生产环境配置;

GitHub地址:https://github.com/mingyang66/spring-parent

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值