java.sql.SQLException: connection closed

2023-09-09 12:16:41.176 [Druid-ConnectionPool-Destroy-181260145] ERROR c.a.d.p.DruidDataSource(3078) - abandon connection, owner thread: http-nio-8005-exec-10, connected at : 1694232698110, open stackTrace

at java.lang.Thread.getStackTrace(Thread.java:1559)

2023-09-09 12:16:41.180 [Druid-ConnectionPool-Destroy-181260145] ERROR c.a.d.p.DruidDataSource(3078) - abandon connection, owner thread: http-nio-8005-exec-1, connected at : 1694232696002, open stackTrace

at java.lang.Thread.getStackTrace(Thread.java:1559)

2023-09-09 12:17:10.105 [http-nio-8005-exec-1] ERROR

2023-09-09 12:17:10.107 [http-nio-8005-exec-1] ERROR

2023-09-09 12:17:11.051 [http-nio-8005-exec-10]

druid配置:

removeAbandoned: true

removeAbandonedTimeout: 300

从被获取到开始计时,如果在removeAbandonedTimeout规定的时间内,还没有关闭的话,就自动进行移除处理。druid的开发者增加这个功能的目的是为了自动移除程序员编程过程中忘记close的connection。而如何断定程序员忘记关闭连接,是通过时间来界定的,removeAbandonedTimeout的默认值是5分钟,我看很多产品都把这个值设置为10分钟,也就是说,如果连接从被获取到被关闭超过10分钟,就会被自动移除。

连接因长SQL一直没有执行完,占用超过removeAbandonedTimeout时被移除,然而在移除时报错了,但因移除报错,此连接还是存在连接池,而实际连接又关闭了,后续再继续拿到的时候就报sqlException:connection closed;

参考:

https://www.modb.pro/db/171346

Druid连接池 报错:abandon connection原因分析_wtopps的博客-CSDN博客

方案一:removeAbandoned设置为false或removeAbandonedTimeout调大;

方案二:在数据库的url链接中加&queryTimeout=75

相关推荐
架构师沉默10 小时前
别又牛逼了!AI 写 Java 代码真的行吗?
java·后端·架构
后端AI实验室14 小时前
我把一个生产Bug的排查过程,交给AI处理——20分钟后我关掉了它
java·ai
凉年技术16 小时前
Java 实现企业微信扫码登录
java·企业微信
狂奔小菜鸡17 小时前
Day41 | Java中的锁分类
java·后端·java ee
hooknum17 小时前
学习记录:基于JWT简单实现登录认证功能-demo
java
程序员Terry18 小时前
同事被深拷贝坑了3小时,我教他原型模式的正确打开方式
java·设计模式
NE_STOP18 小时前
MyBatis-缓存与注解式开发
java
码路飞18 小时前
不装 OpenClaw,我用 30 行 Python 搞了个 QQ AI 机器人
java
Re_zero18 小时前
以为用了 try-with-resources 就稳了?这三个底层漏洞让TCP双向通讯直接卡死
java·后端
SimonKing18 小时前
Fiddler抓包完全指南:从安装配置到抓包,一文讲透
java·后端·程序员