首页 >数据库 >mysql教程 >为什么我的 Spring Boot 数据库连接在不活动后会断开,如何防止这种情况发生?

为什么我的 Spring Boot 数据库连接在不活动后会断开,如何防止这种情况发生?

Linda Hamilton
Linda Hamilton原创
2024-12-06 00:32:10474浏览

Why Are My Spring Boot Database Connections Dropping After Inactivity, and How Can I Prevent It?

在 Spring-Boot 中与数据库的连接超出设定的时间范围被切断

使用 JPA 和 Hibernate 与 Spring-Boot 应用程序中的数据库的连接可以如果交互之间的时间超过特定限制,则会丢失。此问题通常伴随着一条错误消息,指示由于超出服务器的“wait_timeout”值而导致的连接问题。

为了解决此问题,不鼓励使用 Spring 的 testOnBorrow 和validationQuery 属性。相反,更强大的解决方案是配置以下设置:

  • spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true:在 JDBC 中启用自动重新连接URL.
  • spring.datasource.test-while-idle=true: 测试连接空闲。
  • spring.datasource.test-on-borrow=true:在从池中借用连接之前测试连接。
  • spring.datasource.validation-query=SELECT 1:使用验证查询以检查连接有效性。
  • spring.datasource.time- Between-eviction-runs-millis=5000:指定连接验证的频率检查。
  • spring.datasource.min-evictable-idle-time-millis=60000:定义空闲时间限制,超过该时间限制将检查连接并将其从池中删除。

为了防止事务期间活动连接出现潜在问题,建议在事务开始时验证连接,并在必要时获取新连接。

这些配置设置将启用连接的定期验证并防止过时的连接在池中累积。因此,即使长时间没有活动,与数据库的连接也应保持稳定。

以上是为什么我的 Spring Boot 数据库连接在不活动后会断开,如何防止这种情况发生?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn