discard connection

2024-08-26 07:58
文章标签 connection discard

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107995

相关文章

ssh问题:Connection closed by foreign host. Disconnected from remote host

放通一个远程ip能够ssh服务器,但是报错: Connection closed by foreign host.   Disconnected from remote host。。。   解决办法: firewall防火墙放通ip。 /etc/ssh/sshd_config文件修改,运行root用户密码登,再重启sshd服务。 /etc/hosts.allow和/etc/hos

Oracle - ORA-28547: Connection to server failed,probable Oracle Net admin error (Navicat)

一、异常     用Navicat连接Oracle数据库时抛出的异常 二、方案     使用 Oracle 安装目录 \Oracle\product\11.2.0\dbhome_1\BIN 下的 oci.dll      替换 Navicat 安装目录 \Navicat Premium\instantclient_10_2 下的 oci.dll 文件即可

Oracle - ORA-28009: connection as SYS should be as SYSDBA OR SYSOPER

一、原因     sys 用户是超级管理员,所以在登录的时候需要额外指定其角色 二、方案     1、在 PL/SQL 中,在登录界面,将 连接为 的选项 SYSDBA 选中          2、在 SQLPlus 中,通过 as sysdba 子句指定 -- 方式一[oracle@xl ~]$ sqlplus sys/登录密码 as sysdba-- 方式二[o

mysql 事务与connection,锁,慢sql,如何解决,杀死执行的线程

前提说明 navicat中每打开一个窗口就是打开一个connection,关掉窗口就是关掉connection 事务与connection  测试事务不提交的情况 (步骤1)先打开一个窗口,开启一个事务T1插入一条数据,这里不进行提交。 由于在一个事务中,所以select 能立刻查出insert的但还没提交的数据。 查询是否开启 事务超时,回滚策略。 SHOW GLO

关于javaSocket中 Software caused connection abort: recv failed问题

在学习Socket中今天突然遇到了下面这样的问题 原来是网路连接出了问题,因为我测试的是远程连接所以是在学校的局域网下,结果很不稳定,开始还以为怎么了一会连上了一会又出现问题然后把IP地址改为本机的127.0.0.1之后就没有 出现过了.

火狐浏览器设置秘籍:让https协议下的ws不加密时运行无阻(WebSocket connection HTTPS)

Uncaught (in promise) DOMException: Failed to construct ‘WebSocket’: An insecure WebSocket connection may not be initiated from a page loaded over HTTPS. 明确指出了一个常见的安全限制:当尝试从一个通过HTTPS加载的页面上发起一个不安

缓解webclient频繁报‘Connection prematurely closed BEFORE response’的问题

现象: 我在Java代码中使用org.springframework.web.reactive.function.client.WebClient进行网络请求,一开始会有比较多的偶发报错:Connection prematurely closed BEFORE response,网络连接莫名其妙就断了。 处理: 在网上找了挺多资料,就感觉https://stackoverflow.com/q

android开发之Android SDK更新出现Connection to http://dl-ssl.google.com refused 的解决办法

文章出处:http://blog.csdn.net/foxeatapple/article/details/8450372 问题描述使用SDK Manager更新时出现问题Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-6.xml, reason: Connection to https

Your connection to this site is not secure

chrome 打开某一个网站的网页地址栏提示Your connection to this site is not secure,同一个网站的其它地址栏打开不会 无效的方案 浏览器地址栏输入: chrome://flags 找到下边的选项,从Default改为Disabled即可成功解决 亲测这个方法不行 解决方案 点击右上角的3个点 -> 选择设置 -> 安全

RFC6455-The WebSocket protocol 之八:7. Closing the Connection 8. Error Handling

7.  Closing the Connection 7.关闭连接 7.1.  Definitions 7.1 术语 7.1.1.  Close the WebSocket Connection 7.1.1 关闭WebSocket连接    To _Close the WebSocket Connection_, an endpoint closes the    underlying T