springboot druid数据库连接池连接失败后一直重连的解决方法

问题描述:

在使用 Spring Boot 集成 Druid 数据库连接池时,连接失败后 Druid 会一直重试连接,但是重试的频率比较低(默认为 1 分钟重连一次),导致数据库宕机或者网络出现波动时,数据源的恢复时间过长,影响了系统的可用性。

解决方法:

为了解决这个问题,可以如下进行配置:

1、设置 testWhileIdle 为 true

在 Druid 数据源的配置中,将 testWhileIdle 设置为 true,这样就可以在连接空闲时检测连接的可用性,以便在连接发生异常时及时重连。

示例代码:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    min-idle: 1
    initial-size: 2
    max-active: 10
    test-while-idle: true

2、设置 validationQueryTimeout

在 Druid 数据源的配置中,设置 validationQueryTimeout 属性,该属性设置检测连接的最长时间,当检测时间超过该值时,即便检测没有完成,连接也会被返回到连接池中进行重用,避免了因为单个连接超时导致整个程序瘫痪的情况。

示例代码:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    min-idle: 1
    initial-size: 2
    max-active: 10
    test-while-idle: true
    validation-query-timeout: 5000

关于 validationQueryTimeout 属性,需要注意的是,单位为毫秒,默认为 30 秒。

示例说明:

下面是一个使用 Spring Boot 集成 Druid 数据库连接池的示例项目,其中配置了上述的解决方法,可供参考。

项目代码:https://github.com/freewolf/spring-boot-demo/blob/master/druid-demo/

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot druid数据库连接池连接失败后一直重连的解决方法 - Python技术站

(1)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Java实现Redis的集合(set)命令操作

    下面是关于Java实现Redis的集合(set)命令操作的完整攻略: 1. 环境准备 安装Redis数据库,在本地启动Redis服务 在Java项目中引入jedis依赖 2. 初始化Jedis连接 首先需要初始化Jedis连接,通过以下代码创建一个Jedis连接对象: Jedis jedis = new Jedis("localhost"…

    database 2023年5月22日
    00
  • MySQL的driverClassName与url使用方式

    MySQL是一款常用的关系型数据库管理系统,与Java语言结合使用时需要使用MySQL提供的JDBC Driver。在使用MySQL的JDBC Driver时,需要指定Driver的ClassName以及连接数据库的url。 driverClassName driverClassName是JDBC Driver的全限定类名。在使用MySQL的JDBC Dri…

    database 2023年5月21日
    00
  • phpstudy升级mysql版本到5.7 ,重启mysql不启动

    phpstudy中mysql升级后MySQL服务无法启动 问题产生: 安装好phpstudy后,升级了MySQL后,通过phpstudy启动,Apache可以启动,Mysql无法启动。 解决方法: 之前已经装过Mysql,要把系统服务里面的MySQL删除,留下MySQLa服务。 在cmd命令行下输入:sc delete mysql 即可删除。 步骤: 一、备…

    MySQL 2023年4月13日
    00
  • C#程序连接数据库及读取数据库中字段的简单方法总结

    针对您提出的问题,我将给出一份详细的攻略。 C#程序连接数据库及读取数据库中字段的简单方法总结 简介 在实际应用中,很多C#程序会需要连接数据库。本文将对于该问题进行探讨,并给出两条示例说明。 步骤 1. 导入所需要的命名空间 我们需要使用 System.Data.SqlClient 命名空间中的类来进行数据库连接和操作,所以我们需要在引入命名空间中添加该命…

    database 2023年5月22日
    00
  • Ubuntu16.04安装MySQL5.7的教程

    Ubuntu16.04安装MySQL5.7的教程 MySQL是一种流行的关系型数据库管理系统。在Ubuntu 16.04上安装MySQL 5.7版本非常简单。以下是安装MySQL 5.7的完整攻略。 步骤1:更新Ubuntu软件包 在安装MySQL之前,应该先更新Ubuntu软件包。打开终端并输入以下命令,然后按Enter键。 sudo apt-get up…

    database 2023年5月22日
    00
  • redis5集群搭建

    主库宕机,从库会被自动选举为主库master,并继承原主库的哈希槽,当master恢复,会成为现主库的从库,且同步宕机期间的数据 若集群创建出错 step1:关服务 ./redis-cli -h fdv-web02.reda -p 7000 -a reda2019 shutdown step2:删除rdb数据文件,nodes-****.conf rm -rf…

    Redis 2023年4月12日
    00
  • 织梦DEDECMS建立模型、简单分表、索引优化操作方法

    下面是“织梦DEDECMS建立模型、简单分表、索引优化操作方法”的完整攻略: 建立模型 在织梦CMS中,模型是用来定义文章的属性、字段、分类等信息的。如果需要自定义模型,可以按照以下步骤进行操作: 登录网站管理后台,在左侧菜单中找到“模型管理”,点击进入。 点击“添加新模型”,输入模型名称、模型表名等信息,并设置需要的字段和属性。 完成模型设置后,可以在“模…

    database 2023年5月19日
    00
  • Oracle删除表前判断表名是否存在若存在则删除

    这里提供一个在Oracle数据库中删除表的操作,其中包括了在删除表之前判断表名是否存在的操作。具体的步骤如下: 1. 查询表名是否存在 使用Oracle的USER_TABLES表可以查询当前用户下所有的表名,因此可以根据目标表名查询是否存在。 SELECT COUNT(*) FROM USER_TABLES WHERE TABLE_NAME = ‘my_ta…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部