遇到的线上问题之“recyle error java.lang.InterruptedException”

news/2024/7/7 20:14:02/文章来源:https://www.cnblogs.com/saoge/p/18277682

Druid出现DruidDataSource - recyle error - recyle error java.lang.InterruptedException: null异常排查与解决

一、线上的代码之前运行的都很平稳,突然就出现了一个很奇怪的问题,看错误信息是第三方框架Druid报出来了,连接池回收连接时出现的问题。

[][ERROR][2024-07-01 11:00:57] com.alibaba.druid.pool.DruidDataSource.recycle 1448 | recyle error 
java.lang.InterruptedExceptionat java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1220)at java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:335)at com.alibaba.druid.pool.DruidDataSource.recycle(DruidDataSource.java:1425)at com.alibaba.druid.pool.DruidPooledConnection.recycle(DruidPooledConnection.java:320)at com.alibaba.druid.filter.FilterChainImpl.dataSource_recycle(FilterChainImpl.java:4534)at com.alibaba.druid.filter.FilterAdapter.dataSource_releaseConnection(FilterAdapter.java:2717)at com.alibaba.druid.filter.FilterChainImpl.dataSource_recycle(FilterChainImpl.java:4530)at com.alibaba.druid.pool.DruidPooledConnection.close(DruidPooledConnection.java:263)at org.springframework.jdbc.datasource.DataSourceUtils.doCloseConnection(DataSourceUtils.java:348)at org.springframework.jdbc.datasource.DataSourceUtils.doReleaseConnection(DataSourceUtils.java:335)at org.springframework.jdbc.datasource.DataSourceUtils.releaseConnection(DataSourceUtils.java:302)at org.springframework.jdbc.datasource.DataSourceTransactionManager.doCleanupAfterCompletion(DataSourceTransactionManager.java:370)at org.springframework.transaction.support.AbstractPlatformTransactionManager.cleanupAfterCompletion(AbstractPlatformTransactionManager.java:1021)at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:815)at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:734)at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:521)at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:293)at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)at com.sun.proxy.$Proxy1351.syncTransaction(Unknown Source)at com.bessky.financial.hander.WfTransactionJobHandler.execute(WfTransactionJobHandler.java:31)at com.xxl.job.core.thread.JobThread.run(JobThread.java:152)

二、排查问题

查看一下他的源码

 

看了一下也没有发现所以然,然后去GitHub上的Druid官方开源处,看了一下历史问题修复,发现这个是旧版本已知的一个Bug。

https://github.com/alibaba/druid/issues/785

看了一下当前使用的Druid的版本【1.0.29】,然后又确认了一下官方版本是【1.1.9】,已经差了很多个版本了。

果断将版本更新至【1.1.9】

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.9</version>
</dependency>

 

翻看之前出错的那里的代码发现

 

更新到最新版本后,上述问题得到解决。

数据库连接被中断的原因有很多,有一种是初始化配置时设置的数据库连接回收时长,通过datasource.getConnontion() 取得的连接必须在removeAbandonedTimeout这么多秒内调用close(),否则就主动将其杀死,就是conn不能超过指定的租期。

详细配置可以参考这篇文章:

https://my.oschina.net/haogrgr/blog/224010

原文链接:https://blog.csdn.net/lingyejun/article/details/121647149

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/735691.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建高可用性、高性能和可扩展的Zabbix Server架构

简介 本教程讲解了一下如何设计构建一个高性能、高可靠、高扩展的Zabbix 监控集群。 架构图 架构图PDF下载: https://songxwn.com/file/Zabbix_HA.pdfPigsty 时序数据库集群 Zabbix Server 和 Grafana的数据都是存放在数据库的,而Zabbix性能很大程度取决于数据库。所以要搭建…

[JavaScript]作用域的“生产者”——词法作用域

本篇文章标题即摘要,就不赘述。 如果文中有不妥或不对的,多多交流。【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/18252500 出自【进步*于辰的博客】参考笔记二,P43.3、P46.1、P9.3;笔记三,P70、P71。目录先…

NAT类型发现

一、前言之前一篇文章中,提出了一个判断NAT类型的方案。该方案是自己研究设计的,比较粗糙。近期研读了关于STUN的一些协议标准,其中RFC3489中就包含了判断NAT类型的标准方案。与自己设计的方案相比,标准方案有以下优点:1,利用了STUN协议中定义的一些属性,如CHANGE-REQUE…

全网最适合入门的面向对象编程教程:06 类和对象的Python实现-自定义类的数据封装

本文我们主要介绍了数据封装的基本概念和特性,如何设置自定义类的私有属性和私有方法,protect属性的概念和特点。全网最适合入门的面向对象编程教程:06 类和对象的 Python 实现-自定义类的数据封装 摘要: 本文我们主要介绍了数据封装的基本概念和特性,如何设置自定义类的私…

MOS管

MOS管 MOS 管是金属-氧化物半导体场效应晶体管的缩写,是一种重要的半导体器件。它具有以下特点和应用:特点:高输入阻抗:MOS 管的输入阻抗很高,可以减少对前级电路的影响。 开关速度快:MOS 管的导通和截止速度很快,适用于高频电路。 噪声低:MOS 管的噪声较低,适用于对噪…

三极管的作用和原理

目录 目录三极管的类型、作用和工作原理三极管的作用NPN三极管结构和工作原理:PNP三极管结构和工作原理:区别和应用场景三极管的类型、作用和工作原理三极管是一种重要的半导体器件,主要有两种类型:NPN和PNP。它们在结构、工作原理和应用上有显著的区别。三极管的作用 三极…

【Oracle】匹配一个字符中是否存在空格以及回车

【Oracle】匹配一个字符中是否存在空格以及回车 使用REGEXP_LIKE,然后使用[[:space:]] [[:space:]] 是一个 POSIX 字符类,匹配任何空白字符,包括空格、制表符、回车和换行 例子如下 SELECT R1, R2 FROM dual WHERE REGEXP_LIKE(R1, R2, [[:space:]]);您能读到这儿,我呢是发…

[淘宝/天猫/1688/京东]API接口数据采集分享

主流电商平台大数据采集API接口。在当今时代,从数据中挖掘价值的重要性愈发凸显,远超以往任何时期。现代企业渴望在任意设备上,无论身处何地,都能实时获取最新的相关信息。这正是数字化转型的核心所在,它同样适用于供应链的每一个环节。在当今时代,从数据中挖掘价值的重要…

@RequestMapping中的name属性解释

在Spring MVC中,@RequestMapping注解用于映射web请求到特定的处理方法。这个注解有多个属性,其中之一就是name。name属性通常用于为映射提供一个名称,这个名称可以在日志、文档或其他需要引用这个映射的地方使用。 在Spring MVC的上下文中,这允许你为特定的@RequestMapping…

6种Win10关闭自动更新方法介绍!

Win10自动更新 想寻找Win10关闭自动更新方法?Windows 10自动更新功能旨在确保您的系统始终运行最新的安全补丁和功能更新。然而,对于某些用户来说,频繁的更新可能带来不便。有时选择拒绝更新,系统会一直不停的提示系统更新;选择更新了,更新后一些软件或网络打印机等相关设…

【动画进阶】类 ChatGpt 多行文本打字效果

今天我们来学习一个有意思的多行文本输入打字效果,像是这样:这个效果其实本身并非特别困难,实现的方式也很多,在本文中,我们更多的会聚焦于整个多行打字效果最后的动态光标的实现。 也就是如何在文本不断变长,在不确定行数的情况下,让文字的最末行右侧处,一直有一个不断…

解决卡顿发热,超帧技术焕发中重载游戏动力

近几年,中国手游市场规模不断扩大,开发者通过在画面、玩法等方面的持续创新和打磨,推出更加精品化的产品。然而愈发精美的画质和复杂的玩法,也给硬件带来超高的负载,导致玩家在游戏过程中,频繁出现掉帧卡顿、发烫、续航差等体验降低的现象。HarmonyOS SDK 图形加速服务(…

ArchiMate 3 学习

目录ArchiMate 3 学习什么是ArchiMateArchiMate 3.1 规范关系动机元素策略元素业务层应用层技术层物理元素实施和迁移元素复合元素 ArchiMate 3 学习 ArchiMate 3 中文版 什么是ArchiMate ArchiMate 是 The Open Group 为企业架构提供的开放和独立的建模语言,由不同的工具供应…

如何找到并快速上手一个开源项目

以前有写过两篇文章来简单聊过如何做开源的事情,最近我自己组了一个社区里面也有不少朋友对开源感兴趣,于是我便根据自己的经验系统的梳理了一些关于开源的事情。新手如何快速参与开源项目 手把手教你为开源项目贡献代码有兴趣的可以先看看之前这两篇。🔎如何找到自己感兴趣…

WPF在.NET9中的重大更新:Windows 11 主题

WPF在.NET9中的重大更新:Windows 11 主题在2023年的2月20日,在WPF的讨论区,WPF团队对路线的优先级发起了一次讨论。对三个事项发起了投票。 第一个是Windows 11 主题第二个是更新的控件第三个是可空性注释最终Windows 11 主题得票最高,WPF团队2023-2024的工作优先级就是Win…

配置 Swagger + 注释

打开Xml文件生成,右键项目进入属性设置: 取消未进行注释而进行提示的警告: 然后Program.cs增加代码: 代码:builder.Services.AddSwaggerGen(s => {//获取xml文件名称var xmlFileName = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";//包含注释,…

C#winform如何在窗体实现视频播放

1.在Form窗体设计中的左侧工具箱列表中右击鼠标,单击选择项。2.在弹出的对话框中点击COM组件,选择Windows Media Player,点击确定3.接着在工具箱选择Windows Media Player控件,将控件添加到窗体中,并且添加一个OpenFileDialog控件4.接着在工具箱的对话框中将OpenFileDialog…

AI引导学习前端开发

假设你是一位前端技术开发专家,我有几个JavaScript的问题想向你咨询 我想用JavaScript来做微信小程序开发,请以表格的方式输出知识要点 请叙述JavaScript操作浏览器对象的常用接口和方法 把上述表格按照访问对象归类 将上述文字制作一个表格来呈现,要求逻辑清晰描述信息简明…

Codeforces Round 894 (Div. 3) A-E cd 894 div3

A. Gift Carpet 每道题都是伸缩代码框有ac代码请不要漏掉 --------------------------题解----------------------------- 按先行便然后列再变循环 设置jud每满足一个条件就让jud++ 只有jud==相应值的时候才让其++点击查看代码 #include<bits/stdc++.h> using namespace …

网络隔离后 用这种安全U盘可实现数据安全传输

在网络隔离的环境下,尤其是物理隔离环境下,使用安全U盘进行数据传输可以被视为一种安全的方法。不过前提是要确保以下几点: 1、来源可信性:确保U盘的来源是可信的,没有被感染或篡改过的风险。最好使用自己的U盘,或者来自于安全可靠的来源。 2、扫描病毒:在使用U盘之前,…