discard connection
现象
2021/05/31-19:36:38.927 [] [ShardingSphere-0] ERROR com.alibaba.druid.pool.DruidDataSource- discard connection
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after statement closed.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.StatementImpl.checkClosed(StatementImpl.java:461)
at com.mysql.jdbc.PreparedStatement.execute$original$GSeftvfb(PreparedStatement.java:1274)
at com.mysql.jdbc.PreparedStatement.execute$original$GSeftvfb$accessor$6BywaSxn(PreparedStatement.java)
at com.mysql.jdbc.PreparedStatement$auxiliary$eBJ6JSqZ.call(Unknown Source)
at com.jd.pfinder.profiler.tracer.plugin.invoker.InstanceEnhanceInvoker.intercept(InstanceEnhanceInvoker.java:62)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java)
at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497)
at org.apache.shardingsphere.shardingjdbc.executor.SQLExecuteCallbackFactory$2.executeSQL(SQLExecuteCallbackFactory.java:62)
at org.apache.shardingsphere.shardingjdbc.executor.SQLExecuteCallbackFactory$2.executeSQL(SQLExecuteCallbackFactory.java:58)
at org.apache.shardingsphere.sharding.execute.sql.execute.SQLExecuteCallback.execute0(SQLExecuteCallback.java:82)
at org.apache.shardingsphere.sharding.execute.sql.execute.SQLExecuteCallback.execute(SQLExecuteCallback.java:58)
at org.apache.shardingsphere.underlying.executor.engine.ExecutorEngine.lambda$asyncExecute$0(ExecutorEngine.java:110)
at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:111)
at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:58)
at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:75)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
原因
之所以会出现这个异常,是因为MySQL5.0以后针对超长时间DB连接做了一个处理,那就是如果一个DB连接在无任何操作情况下过了8个小时后(Mysql 服务器默认的“wait_timeout”是8小时),Mysql会自动把这个连接关闭。这就是问题的所在,在连接池中的connections如果空闲超过8小时,mysql将其断开,而连接池自己并不知道该connection已经失效,如果这时有 Client请求connection,连接池将该失效的Connection提供给Client,将会造成上面的异常。
所以配置datasource时需要配置相应的连接池参数,定是去检查连接的有效性,定时清理无效的连接。
解决方案
尝试1
设置数据源中配置
druid.test-on-borrow=true
druid.test-on-return=false
druid.test-while-idle=true
druid.time-between-eviction-runs-millis=60000
druid.min-evictable-idle-time-millis=3600000
druid.validation-query=SELECT 1 FROM DUAL
尝试2
在jvm启动参数中增加如下配置:
-Ddruid.mysql.usePingMethod=false
尝试3
数据库url配置中增加这个配置:&autoReconnect=true
问题依然存在
基本上4分钟报一次,不过不影响正常业务逻辑
先暂时搁置
原文链接:
https://blog.csdn.net/qq_38023253/article/details/80815618
https://blog.csdn.net/znb769525443/article/details/109752364
https://www.renfei.net/posts/1003414
https://www.zzm8.com/article/193772.html
discard connection相关推荐
- Druid连接池异常:close connection error;discard connection
问题日志: 2023-03-02 10:37:06,083 [ERROR] [http-nio-8988-exec-14] com.alibaba.druid.util.JdbcUtils [Jdbc ...
- discard connection丢失数据_python kafka 生产者发送数据的三种方式
python kafka 生产者发送数据的三种方式 发送方式 同步发送 发送数据耗时最长 有发送数据的状态,不会丢失数据,数据可靠性高 以同步的方式发送消息时,一条一条的发送,对每条消息返回的结果判断 ...
- druid连接池mysql自动关闭_探究Druid连接池“违反协议”异常
作者:董添 使用Druid连接池和PreparedStatement Cache后,应用访问数据库的效率提高了,针对连接池的监控手段也变多了,但是随之而来也出现了一些新的问题,最近发现在给表增加字段后 ...
- 应用使用Druid连接池经常性断链问题分析
前段时间有应用使用Druid连接池经常的提示断链报错,整个问题排查分析过程很有意思.这里将Druid连接池.数据库层以及负载均衡层的配置分析下,记录整个问题的分析过程,同时梳理下Druid连接池的配置 ...
- 第十五节 使用NETCONN 接口编程
当你学习到这章的时候,说明已经对LwIP 中各个层的处理已经稔熟于心了,此时,再去回顾第9节的内容,相信,你会更加熟悉整个LwIP 的运作过程,本专栏全是基于操作系统之上来讲解LwIP,那么NETCO ...
- Druid java.sql.SQLException: 违反协议 / Oracle连接报错生违反协议
1. 报错背景 tomcat + Oracle + Druid连接池后台报错( java.sql.SQLException: 违反协议),很奇怪的是只有某种特殊情况下才报错,项目其他功能都运转正常,报 ...
- LWIP netconn TCP UDP测试 实例
本文由自己从网络上查资料整理而成 已经测试可用 只需修改下就能用到项目中 给需要的童鞋们参考 平台(LM3S9B92+UCOSII+LWIP) 在线IP地址转换器(二进制 十进制 十六进制转换) ht ...
- 超文本传输协议版本 2 [http/2 spec]
Github:中英对照版 超文本传输协议版本 2 IETF HTTP2草案(draft-ietf-httpbis-http2-13) 摘要 本规范描述了一种优化的超文本传输协议(HTTP).HTTP/ ...
- http2协议翻译(转)
超文本传输协议版本 2 IETF HTTP2草案(draft-ietf-httpbis-http2-13) 摘要 本规范描述了一种优化的超文本传输协议(HTTP).HTTP/2通过引进报头字段压缩以及 ...
最新文章
- Spring Cloud Stream Binder 实现
- OpenCASCADE:Modeling Algorithms模块几何工具之投影
- python解析原理_代码详解:Python虚拟环境的原理及使用
- 【版本发布】Jeecg-P3 1.0 发布,J2EE微服务框架(插件开发)
- GMIC来了 HTC VIVE细化VR梦
- 华为云开发者青年班——你的优秀值得被全球开发者看到!
- 谁需要这件礼物?每一个爱学习的人!
- js正则验证输入表情
- redis 在 mac 下的安装与使用
- obs中音频和视频的同步
- 组网学习之什么是链路冗余(二)
- android gms包
- Incorrect argument type to variable ‘max_allowed_packet‘解决方法
- java流重定向如何分类,Java 文件流與標准流之間的重定向
- WAF-Web应用防护系统
- word文档无法编辑且点击后每次跳到首页
- Spring 你让我伤透了个心啊!
- 淘宝京东APP节日更新布局 实现方式
- Shadow框架接入遇到的一些错误解决
- [转]做个男人,做个成熟的男人,做个有城府的男人
热门文章
- 'django-admin' 不是内部或外部命令,也不是可运行的程序 或批处理文件。问题处理
- 天祥语录——反思我的大学,让我有了考研的冲动!
- radiance和irradiance
- PeopleSoft登录流程
- 2022年 HSC-1th中CRYPTO的LINE-GENERATION-TEST
- 揭秘LOL背后的IT基础架构丨踏上部署多样性的征程
- NERF++: ANALYZING AND IMPROVING NEURAL RADIANCE FIELDS分析和改进神经辐射场
- testflight 公开版本中应用90天到期失效了该怎么处理-testflight 到期如何续期
- 全方位对比Mesos、Omega和Borg
- 中国科技核心期刊《电子技术应用》