在控制台日志中观察到以下报错:
loglog 2025-02-14 10:38:13.738 ERROR 11324 --- [nio-7777-exec-7] c.a.druid.pool.DruidAbstractDataSource : discard long time none received connection. , jdbcUrl : jdbc:mysql://localhost:3306/lyt, lastPacketReceivedIdleMillis : 698462
该报错表示 Druid连接池检测到某个数据库连接长时间未被使用(约698秒),主动丢弃了该连接。
原因分析
此问题的核心原因是 数据库连接闲置时间过长,可能由以下场景触发:
-
MySQL服务端超时断开
MySQL默认配置了wait_timeout
参数(通常为8小时),若连接在超时时间内未被使用,服务端会主动断开连接。
Druid连接池未及时检测到连接失效,导致后续尝试使用此连接时抛出异常。 -
Druid连接池保活机制缺失
- 未配置连接有效性检查(如心跳检测)。
- 未设置合理的连接回收策略(如最小空闲时间)。
-
应用层连接泄漏
某些代码未正确释放连接(如未关闭ResultSet
、Statement
或Connection
),导致连接长期占用。
解决方案
1. 配置Druid连接池保活机制
在app