现象

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相关推荐

  1. 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 ...

  2. discard connection丢失数据_python kafka 生产者发送数据的三种方式

    python kafka 生产者发送数据的三种方式 发送方式 同步发送 发送数据耗时最长 有发送数据的状态,不会丢失数据,数据可靠性高 以同步的方式发送消息时,一条一条的发送,对每条消息返回的结果判断 ...

  3. druid连接池mysql自动关闭_探究Druid连接池“违反协议”异常

    作者:董添 使用Druid连接池和PreparedStatement Cache后,应用访问数据库的效率提高了,针对连接池的监控手段也变多了,但是随之而来也出现了一些新的问题,最近发现在给表增加字段后 ...

  4. 应用使用Druid连接池经常性断链问题分析

    前段时间有应用使用Druid连接池经常的提示断链报错,整个问题排查分析过程很有意思.这里将Druid连接池.数据库层以及负载均衡层的配置分析下,记录整个问题的分析过程,同时梳理下Druid连接池的配置 ...

  5. 第十五节 使用NETCONN 接口编程

    当你学习到这章的时候,说明已经对LwIP 中各个层的处理已经稔熟于心了,此时,再去回顾第9节的内容,相信,你会更加熟悉整个LwIP 的运作过程,本专栏全是基于操作系统之上来讲解LwIP,那么NETCO ...

  6. Druid java.sql.SQLException: 违反协议 / Oracle连接报错生违反协议

    1. 报错背景 tomcat + Oracle + Druid连接池后台报错( java.sql.SQLException: 违反协议),很奇怪的是只有某种特殊情况下才报错,项目其他功能都运转正常,报 ...

  7. LWIP netconn TCP UDP测试 实例

    本文由自己从网络上查资料整理而成 已经测试可用 只需修改下就能用到项目中 给需要的童鞋们参考 平台(LM3S9B92+UCOSII+LWIP) 在线IP地址转换器(二进制 十进制 十六进制转换) ht ...

  8. 超文本传输协议版本 2 [http/2 spec]

    Github:中英对照版 超文本传输协议版本 2 IETF HTTP2草案(draft-ietf-httpbis-http2-13) 摘要 本规范描述了一种优化的超文本传输协议(HTTP).HTTP/ ...

  9. http2协议翻译(转)

    超文本传输协议版本 2 IETF HTTP2草案(draft-ietf-httpbis-http2-13) 摘要 本规范描述了一种优化的超文本传输协议(HTTP).HTTP/2通过引进报头字段压缩以及 ...

最新文章

  1. Spring Cloud Stream Binder 实现
  2. OpenCASCADE:Modeling Algorithms模块几何工具之投影
  3. python解析原理_代码详解:Python虚拟环境的原理及使用
  4. 【版本发布】Jeecg-P3 1.0 发布,J2EE微服务框架(插件开发)
  5. GMIC来了 HTC VIVE细化VR梦
  6. 华为云开发者青年班——你的优秀值得被全球开发者看到!
  7. 谁需要这件礼物?每一个爱学习的人!
  8. js正则验证输入表情
  9. redis 在 mac 下的安装与使用
  10. obs中音频和视频的同步
  11. 组网学习之什么是链路冗余(二)
  12. android gms包
  13. Incorrect argument type to variable ‘max_allowed_packet‘解决方法
  14. java流重定向如何分类,Java 文件流與標准流之間的重定向
  15. WAF-Web应用防护系统
  16. word文档无法编辑且点击后每次跳到首页
  17. Spring 你让我伤透了个心啊!
  18. 淘宝京东APP节日更新布局 实现方式
  19. Shadow框架接入遇到的一些错误解决
  20. [转]做个男人,做个成熟的男人,做个有城府的男人

热门文章

  1. 'django-admin' 不是内部或外部命令,也不是可运行的程序 或批处理文件。问题处理
  2. 天祥语录——反思我的大学,让我有了考研的冲动!
  3. radiance和irradiance
  4. PeopleSoft登录流程
  5. 2022年 HSC-1th中CRYPTO的LINE-GENERATION-TEST
  6. 揭秘LOL背后的IT基础架构丨踏上部署多样性的征程
  7. NERF++: ANALYZING AND IMPROVING NEURAL RADIANCE FIELDS分析和改进神经辐射场
  8. testflight 公开版本中应用90天到期失效了该怎么处理-testflight 到期如何续期
  9. 全方位对比Mesos、Omega和Borg
  10. 中国科技核心期刊《电子技术应用》