SpringBoot解决mysql 连接8小时问题

SpringBoot解决mysql 连接8小时问题

问题: 服务连接mysql数据库,8小时没有数据库的操作时候,数据库会主动断开连接释放资源

解决办法总共4种方法

MySQL 5版本之前可以通过在URL后面加入autoReconnect=true

application.properties文件中加入:

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

** 数据库配置调整:**

如果你有权限访问 MySQL 服务器的配置,你也可以调整 MySQL 的连接超时时间。修改 wait_timeoutinteractive_timeout 参数,将它们设置为一个更大的值,以延长连接的存活时间。

请注意,修改 MySQL 服务器的配置可能需要谨慎考虑,因为这会影响到所有连接

my.ini 文件中修改此参数

ini 复制代码
[mysqld]
wait_timeout=31536000
interactive_timeout=31536000

定时任务发送查询:

如果你没有使用连接池,你可以创建一个定时任务,在一定时间间隔内发送一个查询来保持连接活跃。这可以使用 Spring 的 @Scheduled 注解来实现

java 复制代码
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class KeepAliveTask {
    private final JdbcTemplate jdbcTemplate;

    public KeepAliveTask(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    @Scheduled(fixedRate = 300000) // 5 minutes
    public void keepConnectionAlive() {
        jdbcTemplate.queryForObject("SELECT 1", Integer.class);
    }
}
相关推荐
编程彩机13 分钟前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
笨蛋不要掉眼泪15 分钟前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
像少年啦飞驰点、1 小时前
零基础入门 Spring Boot:从“Hello World”到可上线微服务的完整学习指南
java·spring boot·微服务·编程入门·后端开发
indexsunny3 小时前
互联网大厂Java面试实战:从Spring Boot到微服务架构的技术问答解析
java·spring boot·redis·微服务·kafka·jwt·flyway
sheji34163 小时前
【开题答辩全过程】以 基于SpringBoot的疗养院管理系统的设计与实现为例,包含答辩的问题和答案
java·spring boot·后端
盒马coding3 小时前
深度解密MySQL2PG工具MySQL至PostgreSQL语法全景拆解过程
数据库·mysql·postgresql
Nandeska3 小时前
13、MySQL半同步复制示例
数据库·mysql
短剑重铸之日3 小时前
《设计模式》第六篇:装饰器模式
java·后端·设计模式·装饰器模式
液态不合群3 小时前
【面试题】MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
android·数据库·mysql