千家信息网

Atomikos + druid 多数据源数据库连接超时回收问题怎么解决

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,Atomikos + druid 多数据源数据库连接超时回收问题怎么解决,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。异
千家信息网最后更新 2026年11月03日Atomikos + druid 多数据源数据库连接超时回收问题怎么解决

Atomikos + druid 多数据源数据库连接超时回收问题怎么解决,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

异常表现

一段时间不查询数据,通常是过一夜第二天一早发起第一次连接时会出现数据库无法连接异常:

//通常会出现下面错误,异常情况一:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 37,350,882 milliseconds ago.  The last packet sent successfully to the server was 37,350,882 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.//异常情况二:ERROR [com.alibaba.druid.pool.DruidPooledStatement:357] - CommunicationsException, druid version 1.1.10, jdbcUrl : jdbc:mysql://XX.XX.XX.XX:3306/txsmarthome?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true&noAccessToProcedureBodies=true&autoReconnect=true&failOverReadOnly=false&pinGlobalTxToPhysicalConnection=true, testWhileIdle true, idle millis 39540140, minIdle 50, poolingCount 0, timeBetweenEvictionRunsMillis 60000, lastValidIdleMillis 39540140, driver com.mysql.jdbc.Driver, exceptionSorter com.alibaba.druid.pool.vendor.MySqlExceptionSorter//异常情况三:java.sql.SQLException: connection holder is null

druid 异常

出现上述前两个异常是由于数据库连接超过mysql配置的 wait_timeout 时间,连接被mysql回收,但是 druid 连接池并不知道连接已被回收,因此报错。

连接池都有失败重连功能,druid的做法是在下一次请求连接数据库时,重连上一个异常的连接,所以之后的每次请求都是异常,直到池中所有连接都重连一次。即连续失败次数就是 minIdle 配置的数量。

如果连接多数据库情况,每个数据库的请求都会连接失败 minIdle 次。

连接池配置

spring:    datasource:        druid:            db1:                # 每隔1小时检查数据库连接是否有效,连接成功1分钟后开始计时                removeAbandonedTimeout: 3600                # 如果连接失效就删重连                removeAbandoned: true                # 删除时输出日志                logAbandoned: true                # 测试查询查询结果                testOnReturn: true

上述配置可保证限时删除无效连接。

数据库配置

命令行连接数据库后,执行:show global variables like "%timeout%";

mysql> show global variables like "%timeout%";+-----------------------------+----------+| Variable_name               | Value    |+-----------------------------+----------+| connect_timeout             | 10       || delayed_insert_timeout      | 300      || have_statement_timeout      | YES      || innodb_flush_log_at_timeout | 1        || innodb_lock_wait_timeout    | 7200     || innodb_rollback_on_timeout  | OFF      || interactive_timeout         | 3600     || lock_wait_timeout           | 31536000 || net_read_timeout            | 30       || net_write_timeout           | 60       || rpl_stop_slave_timeout      | 31536000 || slave_net_timeout           | 60       || wait_timeout                | 3600     |+-----------------------------+----------+

上述数据库的链接有效时间是1小时,mysql默认为8小时,可使用命令修改,无须重启mysql:

# 修改为12小时,注意下面两个配置项要一致才能生效mysql> set global interactive_timeout=43200;Query OK, 0 rows affectedmysql> set global wait_timeout=43200;Query OK, 0 rows affected

需要注意 链接池 removeAbandonedTimeout <= 数据库 wait_timeout。

atomikos 异常

异常情况三的场景更复杂一些, atomikos 工作在 druid 上层,当druid检测到超时链接并重连后,并不会通知 atomikos,所以下次sql执行时仍然会报错。

atomikos 资料较少,看源码太费时,有空了再研究。

解决方案
  1. 尽量增大数据库 wait_timeout 的时间(需要注意过大的 wait_timeout 会影响数据回收无效链接)。

  2. 可关闭druid removeAbandoned 功能。

  3. 配置一个定时器,在 min(wait_timeout,removeAbandonedTimeout) 时间内至少执行 minIdle 次,每次都在所有数据源中执行一个简单的查询。

三种方式可结合使用

升级 mysql-jdbc-driver 到6以上据说也可以解决,没有测试过。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

数据 数据库 配置 情况 时间 小时 链接 查询 数据源 有效 两个 功能 命令 帮助 测试 复杂 清楚 一致 成功 上层 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技网 广州紫鲸互联网科技有限公司 互联网 科技创业 有马互联网科技 苏州互联网科技贷款公司 互联网 视角下的科技创新 开启互联网科技时代小说 济南华为互联网科技产业总部基地 互联网教育科技公司vipkid 移动互联网科技股 互联网科技与大数据专业 电子科技大学互联网创业大赛 高科技互联网发展前景如何 明优互联网科技有限公司 四川互联网展示科技馆设计 广东鹅鹅鹅互联网科技有限公司 互联网界的黑科技 河南商务圈互联网科技有限公司 广东猫王互联网科技有限公司电话 科技发展第三阶段互联网时代 互联网佳科技有限公司 科技互联网创业计划书 丰台科技园 互联网公司 湖南洣水互联网科技有限公司扣款 博兴的互联网电子科技公司 互联网新科技动漫ppt素材 保险科技服务互联网营销体系 第三届互联网大会安防黑科技 东风日产互联网科技公司叫什么 高科技和互联网的现代国家
0