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日

相关文章

  • Mysql 原生语句中save or update 的写法汇总

    当我们需要向MySQL数据库中插入或更新数据时,我们可以使用 save or update 操作。这个操作本质上是一个 insert into 和 update 的组合。 下面是我给出的 “Mysql 原生语句中 save or update 的写法汇总” 的完整攻略: 1. 什么是 save or update 操作 save or update 是 My…

    database 2023年5月21日
    00
  • 如何使用Python实现数据库中数据的日期时间格式转换?

    以下是使用Python实现数据库中数据的日期时间格式转换的完整攻略。 数据库中数据的日期时间格式转换简介 在数据库中,时间格式转换是指将日期时间数据从一种格式转换为一种格式。在Python中,可以使用pymysql连接到MySQL数据库,并使用SELECT语句实现日期时间格式转换。 步骤1:连接到数据库 在Python中,可以使用pymysql连接MySQL…

    python 2023年5月12日
    00
  • Oracle归档日志写满(ora-00257)了怎么办

    下面是关于”Oracle归档日志写满(ora-00257)了怎么办”的完整攻略。 背景 在使用 Oracle 数据库时,由于业务数据增长或者自身原因导致归档日志文件过多,从而占用了服务器磁盘空间,严重影响数据库的正常运行甚至导致数据库宕机。 解决步骤 查看归档日志文件的路径 在终端输入命令archive log list查看当前归档日志文件的路径,例如: S…

    database 2023年5月22日
    00
  • 详解MySQL LIKE:模糊查询

    MySQL中的LIKE表示模糊查询,用于匹配字符串中的指定字符或字符模式。在使用LIKE时,可以使用特殊字符来代替指定字符或字符模式: %:代表任意长度(包括0长度)的字符串。 _:代表一个任意字符。 例如,要查找一个以字母“a”开头的所有字符串,可以使用如下语句: SELECT * FROM table_name WHERE column_name LIK…

    MySQL 2023年3月9日
    00
  • MySql安装与使用图文教程【推荐】

    MySql安装与使用图文教程【推荐】 MySQL是一个开源的关系型数据库管理系统,它是一种基于客户端/服务器模式工作的数据库系统。在本教程中,我们将学习如何安装并使用MySQL。以下是该过程的详细步骤: 步骤1:下载MySQL 为了使用MySQL,您需要下载它。您可以从官方网站MySQL Downloads下载最新的MySQL版本。选择适合您操作系统的版本进…

    database 2023年5月22日
    00
  • linux CentOS 7.4下 mysql5.7.20 密码改回来的处理方法

    下面我来详细讲解在Linux CentOS 7.4下如何将MySQL5.7.20的密码改回来的处理方法。 确认MySQL版本 首先,进入MySQL的shell并确认MySQL版本。在终端输入以下命令进入MySQL shell: sudo mysql -u root -p 然后输入MySQL root用户的密码登录,进入MySQL环境后输入以下命令查询MySQ…

    database 2023年5月22日
    00
  • MySQL系列之四 SQL语法

    MySQL系列之四 SQL语法 SQL是结构化查询语言(Structured Query Language)的缩写,是一种标准的交互式数据库操作语言,可以用来访问和处理关系型数据库(如 MySQL、Oracle、SQL Server 等),是开发 Web 应用程序或构建企业级应用程序必须掌握的基本技能之一。在本篇文章中,我们将针对 MySQL 数据库进行详细…

    database 2023年5月22日
    00
  • MySQL 通过索引优化含ORDER BY的语句

    MySQL 的索引可以提高查询的性能,尤其是在执行含有 ORDER BY 的语句时,MySQL 也可以通过索引进一步优化查询,提升查询效率。下面是针对如何通过索引优化含 ORDER BY 的语句的详细攻略: 1. 添加索引 一般来说,可以通过添加索引来优化含有 ORDER BY 的语句。索引可以让查询更加快速,当查询在有序列上进行时,索引还可以优化排序。在优…

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