这个问题涉及的方面很多,需要一步步去排查,可能环境有问题,数据库有问题,但是网上最多的应该是如下的方式去解决。

以单个数据源为主,多个数据源基本方法一致。

1、MySQL 5版本之前可以通过在URL后面加入autoReconnect=true,如:

  1. spring.datasource.url=jdbc:mysql://localhost/test?autoReconnect=true

2、application.properties文件中加入:

  1. spring.datasource.test-on-borrow=true #(即在获取Connection对象时检测其可用性),不过这样会影响性能,但是这个配置是最有效的。
  2. spring.datasource.test-while-idle=true
  3. spring.datasource.time-between-eviction-runs-millis= 3600000

3、粗暴点的直接修改wait_timeout时间:

  1. show global variables like 'wait_timeout';

推荐使用第2种,从配置项入手。

网上有这块的详细解释:

  1. datasource.qss.max-idle=10
  2. # Number of ms to wait before throwing an exception if no connection is available.
  3. datasource.qss.max-wait=10000
  4. datasource.qss.min-idle=5
  5. datasource.qss.initial-size=5
  6. # Maximum number of active connections that can be allocated from this pool at the same time.
  7. datasource.qss.max-active=100
  8. datasource.qss.validation-query=SELECT 1
  9. #使用testOnBorrow为true(即在获取Connection对象时检测其可用性),不过这样会影响性能
  10. # Validate the connection before borrowing it from the pool.
  11. datasource.qss.test-on-borrow=true
  12. #有些数据库连接的时候有超时限制(mysql连接在8小时后断开),或者由于网络中断等原因,连接池的连接会出现失效的情况,这时候设置一个testWhileIdle参数为true,可以保证连接池内部定时检测连接的可用性,不可用的连接会被抛弃或者重建,最大情况的保证从连接池中得到的Connection对象是可用的。
  13. datasource.qss.test-while-idle=true
  14. #设置当连接被归还时,是否要提交所有还未完成的事务
  15. datasource.qss.test-on-return=false
  16. #如果当前连接池中某个连接在空闲了timeBetweenEvictionRunsMillis时间后任然没有使用,则被物理性的关闭掉。
  17. datasource.qss.time-between-eviction-runs-millis=60000
  18. # 配置一个连接在池中最小生存的时间,单位是毫秒
  19. datasource.qss.min-evictable-idle-time-millis=300000
  20. datasource.qss.jdbc-interceptors=ConnectionState;SlowQueryReport(threshold=0)

总之,要不断尝试发现问题来解决,上述方式不一定准确。可能代码问题,可以配置问题,也可能是数据库的问题;

参考:

http://m.jb51.net/article/108955.htm(以上内容转自此篇文章)

http://blog.csdn.net/return__null/article/details/51589038

http://www.jianshu.com/p/c642a83a1ec7(以上小部分配置转自此篇文章)

http://www.jianshu.com/p/1626d41572f2

http://soberchina.iteye.com/blog/2355289

http://www.ijianbian.com/home/post/detail?id=6201338

http://blog.csdn.net/neosmith/article/details/61202084

https://www.cnblogs.com/java-zhao/p/5413845.html

https://www.cnblogs.com/ityouknow/p/6102399.html

http://www.jianshu.com/p/34730e595a8c

http://confluence.goldpitcher.co.kr/pages/viewpage.action?pageId=136317019

http://xdjava.iteye.com/blog/1525148

http://blog.csdn.net/pq258280920/article/details/17136335

http://grokbase.com/t/servicemix/users/093m2kqnpn/smx4-and-classloading-of-jdbc-driver-mysql-question

Spring Boot多数据源连接8小时后断开的问题解决(MySQL)的更多相关文章

  1. Spring Boot 添加Druid连接池(1.5 版本)

    Druid是一个关系型数据库连接池,是阿里巴巴的一个开源项目,地址:https://github.com/alibaba/druid .Druid不但提供连接池的功能,还提供监控功能,可以实时查看数据 ...

  2. (43). Spring Boot动态数据源(多数据源自动切换)【从零开始学Spring Boot】

    在上一篇我们介绍了多数据源,但是我们会发现在实际中我们很少直接获取数据源对象进行操作,我们常用的是jdbcTemplate或者是jpa进行操作数据库.那么这一节我们将要介绍怎么进行多数据源动态切换.添 ...

  3. Spring Boot多数据源配置(二)MongoDB

    在Spring Boot多数据源配置(一)durid.mysql.jpa 整合中已经讲过了Spring Boot如何配置mysql多数据源.本篇文章讲一下Spring Boot如何配置mongoDB多 ...

  4. spring cloud spring boot JPA 克隆对象修改属性后 无法正常的执行save方法进行保存或者更新

    2019-12-1220:34:58 spring cloud spring boot JPA 克隆对象修改属性后 无法正常的执行save方法进行保存或者更新 未解决

  5. spring boot配置druid连接池连接mysql

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...

  6. 关于Spring Boot 多数据源的事务管理

    自己的一些理解:自从用了Spring Boot 以来,这近乎零配置和"约定大于配置"的设计范式用着确实爽,其实对零配置的理解是:应该说可以是零配置可以跑一个简单的项目,因为Spri ...

  7. Docker 部署Spring Boot 项目并连接mysql、redis容器(记录过程)

    Spring Boot 项目配置 将写好的Spring Boot 项目通过maven 进行package打包获得可执行Jar 再src/main/docker(放哪都行)下编写创建Dockerfile ...

  8. 四、Spring Boot 多数据源 自动切换

    实现案例场景: 某系统除了需要从自己的主要数据库上读取和管理数据外,还有一部分业务涉及到其他多个数据库,要求可以在任何方法上可以灵活指定具体要操作的数据库.为了在开发中以最简单的方法使用,本文基于注解 ...

  9. Spring Boot使用Druid连接池基本配置

    以下为Spring Boot配置Druid 一.pom.xml配置 <dependency> <groupId>com.alibaba</groupId> < ...

随机推荐

  1. esp8266 串口通讯

    1.发送 调用uart_init(115200,115200);初始化串口,波特率设置为115200.前面一个是设置uart0的波特率.后面一个是设置.uart的波特率 然后就可以使用uart0_tx ...

  2. 【Python】第一个爬虫

    import urllib.request import re class DownPic: def __init__(self,url,re_str): self.url = url self.re ...

  3. git创建分支及日常使用

    克隆代码 git clone https://github.com/master-dev.git 查看所有分支 git branch --all # 默认只有master分支,所以会看到如下两个分支 ...

  4. Discuz 页面不能加载插件的原因和解决方法

    模板中,<!--{subtemplate common/headerF}-->这样就不能加载 source/class/class_template.php里65行附近代码 $header ...

  5. 数据结构算法 - ConcurrentHashMap 源码解析

    五个线程同时往 HashMap 中 put 数据会发生什么? ConcurrentHashMap 是怎么保证线程安全的? 在分析 HashMap 源码时还遗留这两个问题,这次我们站在 Java 多线程 ...

  6. docker数据卷的管理和使用

    数据卷的使用,数据库可以保证如果容器出现问题但是数据不丢失的作用,比如MySQL/date下的数据 或者Nginx根目录下的index.html 查看数据卷 [root@docker ~]# dock ...

  7. 六、面向切面的spring(2)

    这个是承接五的,这部分主要的内容是在XML中声明切面. 一.在XML中声明切面 让我们先看一下spring中的AOP配置元素有哪些: AOP配置元素 用途 <aop:advisor> 定义 ...

  8. IO之DataStream数据流举例

    import java.io.*; public class TestDataStream { public static void main(String[] args) { ByteArrayOu ...

  9. Spring 实现 IoC

    理解 “ 控制反转(IoC)”   控制反转(IoC):用白话来讲,就是由 Spring 容器控制程序中类与类之间的关系,而非传统实现中,由程序代码直接操控.这也就是所谓 “控制反转” 的概念所在:控 ...

  10. random,json,pickle,hashlib,shutil,hmac,shelve 模块

    一,复习 ''' 项目开发规范 ATM -- bin: 可执行文件 # run.py import os import sys BASE_DIR = os.path.dirname(os.path.d ...