java web spring-hibernate 任务使用druid连接池,长时间闲置再次访问连接数据库会卡很久,keepAlive属性解决

背景:公司服务器迁移后,新的应用服务器tomcat应用,访问数据库服务器的Oracle、mysql数据库都发现系统长时间闲置,后台没和数据库交互,
过一会在访问就很卡,排查发现是执行sql卡在了,等很长时间许可后,后面就恢复正常了,但是继续闲置又要卡,问了网络管理员说网络没问题,
数据库大家也是按照之前步骤部署的也没查出问题

解决方法:刚开始想最蠢的处理方法就是写个定时任务,每隔一段时间自动执行一次sql,始终保持和数据库连接,
后面查了下druid连接池供应了属性配置

keepAlive解释:连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行探活操作此参数在druid1.0.28以上的版本才支持 详细说明参考官方文档。

<!-- 配置是否定期探活 因为其他项目不需要,项目产品化properties环境配置又多,需要的项目properties增加cytjdb.keepAlive配置,没配置还是设置false -->
  <property name="keepAlive" value="${cytjdb.keepAlive:false}"/>
  <!--定期探活间隔。 默认120s 如果默认值120s不合适就配置,合适就用默认值,无需配置-->
    <!--<property name="keepAliveBetweenTimeMillis" value="30000" /> -->

在这里插入图片描述

在这里插入图片描述

posted @ 2025-07-23 15:28  wzzkaifa  阅读(13)  评论(0)    收藏  举报