mysql使用druid时自动断开连接解决方案

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: mysql使用druid时自动断开连接解决方案

今天接手了一个上了年龄的项目,用的是smm,数据库连接池用的druid,数据库版本较老,是5.0的mysql,我升级成mysql8.0后,一开始还没问题,然后大概每次无连接2分钟后数据库自动断开。。。

前端妹子立马跟我说接口报错了,我咯噔心里一慌,让前端妹子给我截一下报错信息(后台日志刷的太多,当时没注意到)。然后前端妹子说,哦又好了,我当时意识到不对劲,但也没有深究,直到这样的问题出了几次,每次一刷新又好了,我开始意识到问题的严重性。

一开始我复制了报错信息,也就是这一段

Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure
The last packet successfully received from the server was 8848 milliseconds ago.  The last packet sent successfully to the server was 8848 milliseconds ago.

搜了半天,网上说加配置、也就是在连接池配置加上

<property name="testOnBorrow" value="true" />
<property name="testWhileIdle" value="true" />

也就是这里,加上这两行,然而无事发生。。。两分钟后依旧报错

<!-- 数据库连接池 -->
  <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSourc
e" destroy-method="close">
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="maxActive" value="10" />
    <property name="minIdle" value="5" />
    <property name="testOnBorrow" value="true" />
    <property name="testWhileIdle" value="true" />
  </bean>

于是我想到了用mysql的select(1)语句去保持连接,它不是两分钟断开嘛~

那我每分钟执行一次这个语句,保持mysql和服务端连接不就好了吗?

果然,写了个定时任务

@Resource
RefreshMysqlConnectionMapper refreshMysqlConnectionMapper;
@Scheduled(cron = "*/60 * * * * ?")
public void refreshMysqlConnection() {
    System.out.println("-----------------Performed task scheduling and maintained database connection" ); // 每60秒执行一次
    refreshMysqlConnectionMapper.refreshMysqlConnection();
  }

配置定时任务

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:task="http://www.springframework.org/schema/task"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.2.xsd">
  <context:component-scan base-package="com.ruben.task" />
  <!-- 开启task注解驱动 -->
  <task:annotation-driven />
</beans>

RefreshMysqlConnectionMapper.xml里面的sql语句,就这一条

<select id="refreshMysqlConnection" resultType="int">
    select (1)
  </select>

之后再也没出现过断开连接的错误~

还有其他的方式,比如修改数据库配置文件,让无连接后断开时间改久一点。

但无奈公司的DBA不在,数据库不让我碰,只好出此下策hh。好在问题解决了!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
分布式计算 关系型数据库 数据处理
Dataphin常见问题之没有建表的权限如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
1月前
|
关系型数据库 MySQL 数据库连接
连接和管理RDS
连接和管理RDS
28 2
|
1月前
|
Ubuntu 关系型数据库 MySQL
【MySQL】Navicat/SQLyog连接Ubuntu中的数据库(MySQL)
【MySQL】Navicat/SQLyog连接Ubuntu中的数据库(MySQL)
|
1月前
|
关系型数据库 MySQL 数据安全/隐私保护
关于Navicat Premium连接MySQL出现2059错误解决方法
关于Navicat Premium连接MySQL出现2059错误解决方法
|
1月前
|
关系型数据库 MySQL 数据库
深入探讨MySQL并发事务的问题及解决方案
深入探讨MySQL并发事务的问题及解决方案
75 0
|
1月前
|
SQL 关系型数据库 MySQL
阿里云MySQL数据库价格、购买、创建账号密码和连接数据库教程
阿里云数据库使用指南:购买MySQL、SQL Server等RDS实例,选择配置和地区,完成支付。创建数据库和账号,设置权限。通过DMS登录数据库,使用账号密码访问。同地域VPC内的ECS需将IP加入白名单以实现内网连接。参考链接提供详细步骤。
372 3
|
1天前
|
关系型数据库 MySQL 数据挖掘
【MySQL】多表连接查询
【MySQL】多表连接查询
|
1天前
|
安全 关系型数据库 MySQL
node实战——后端koa结合jwt连接mysql实现权限登录(node后端就业储备知识)
node实战——后端koa结合jwt连接mysql实现权限登录(node后端就业储备知识)
11 3
|
4天前
|
关系型数据库 MySQL 数据安全/隐私保护
使用Navicate连接Mysql过程详解
使用Navicate连接Mysql过程详解
14 0
|
12天前
|
SQL 关系型数据库 MySQL
DQL语言之连接查询(mysql)
DQL语言之连接查询(mysql)