CN116737818B - Druid数据库连接池的连接泄漏检测方法及系统 - Google Patents
Druid数据库连接池的连接泄漏检测方法及系统 Download PDFInfo
- Publication number
- CN116737818B CN116737818B CN202311021649.7A CN202311021649A CN116737818B CN 116737818 B CN116737818 B CN 116737818B CN 202311021649 A CN202311021649 A CN 202311021649A CN 116737818 B CN116737818 B CN 116737818B
- Authority
- CN
- China
- Prior art keywords
- connection
- database
- pool
- connection pool
- monitor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 31
- 238000012544 monitoring process Methods 0.000 claims abstract description 55
- 230000000694 effects Effects 0.000 claims abstract description 37
- 238000005516 engineering process Methods 0.000 claims abstract description 10
- 238000000034 method Methods 0.000 claims description 21
- 230000002159 abnormal effect Effects 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 20
- 238000007639 printing Methods 0.000 claims description 12
- 230000005856 abnormality Effects 0.000 claims description 10
- 230000009471 action Effects 0.000 claims description 10
- 238000010801 machine learning Methods 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000012549 training Methods 0.000 claims description 5
- 238000005457 optimization Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 claims description 4
- 230000006378 damage Effects 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 claims description 3
- 230000003044 adaptive effect Effects 0.000 claims description 2
- 238000011084 recovery Methods 0.000 claims description 2
- 239000002699 waste material Substances 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000003066 decision tree Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012731 temporal analysis Methods 0.000 description 2
- 238000000700 time series analysis Methods 0.000 description 2
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提出Druid数据库连接池的连接泄漏检测方法,包括:在数据库连接池实例创建时,为数据库连接池绑定一个数据库连接池监视器,数据库连接池监视器负责监控连接池的整体状态;在数据库连接池初始化阶段,为新的数据库连接实例创建数据库连接监视对象,并将数据库连接监视对象注册到对应数据库连接池监视器中;使用连接池的拦截器技术,将数据库连接池中的连接活动事件注册到对应的数据库连接监视对象中;数据库连接池监视器开始遍历持有连接的数据库连接监视对象,并对其进行监视。本发明有效地解决连接泄露问题,可以避免数据库资源的浪费,提高资源的利用率。
Description
技术领域
本发明涉及数据库连接池技术领域,具体涉及Druid数据库连接池的连接泄漏检测方法及系统。
背景技术
随着互联网和大数据时代的到来,数据库成为了许多应用程序的核心组成部分。应用程序需要与数据库进行频繁的交互来存储和检索数据。为了提高性能和效率,很多应用程序采用数据库连接池来管理数据库连接的创建和释放。
数据库连接池是一种用于管理数据库连接的技术组件,它维护着一组预先创建的数据库连接,并在需要时将它们分配给应用程序。连接池的使用可以避免频繁地创建和销毁数据库连接,从而提高应用程序的响应速度和性能。
在数据库连接池的运行过程中,可能会发生连接泄露的情况。连接泄露指的是应用程序在使用完数据库连接后没有正确地释放它,导致连接资源没有被回收和重用。如果连接泄露问题得不到及时解决,将会导致数据库连接资源的浪费和耗尽,进而影响系统的可用性和性能。
Druid是一种开源的高性能数据库连接池,它在连接池管理和性能监测方面具有很多优势。然而,即使在使用Druid连接池的情况下,连接泄露问题仍然可能存在,并且现有的监控无法准确的定位连接泄露的原因,需要进行有效的监测和处理。
针对相关技术中的问题,目前尚未提出有效的解决方案。
发明内容
为克服现有技术的不足,本发明提出Druid数据库连接池的连接泄漏检测方法及系统,通过监控和分析长时间未归还的连接,及时识别并处理数据库连接泄露问题,能够大幅提升系统的稳定性和可靠性,且能够准确判断连接泄露的原因,优化相关的数据库操作,从而提升系统的整体性能。
为实现上述目的,本发明提供Druid数据库连接池的连接泄漏检测方法及系统,其特征在于,包括:
步骤S1:初始化数据库连接池监视器:在每个数据库连接池实例创建时,为其绑定一个数据库连接池监视器(S11)。这个监视器负责监控连接池的整体状态;
步骤S2:为每个数据库连接创建监视对象:在数据库连接池初始化阶段,为每个新的数据库连接实例创建一个监视对象,并将这个对象注册到对应连接池的连接池监视器中(S12)。每个数据库连接的监视对象负责监控这个连接的活动和状态;
步骤S3:使用Druid连接池的拦截器技术,将每个连接池中的连接活动事件注册到对应的数据库连接监视对象中(S13)。这样,每个数据库连接的监视对象就能跟踪并记录这个连接的活动;
步骤S4:连接池监视器开始遍历所有持有连接的连接监视对象,并对其进行监视(S14)。当监视器检测到连接活动异常时,会立即执行相应的处理动作,以保证数据库连接池的稳定性和健康性。
进一步地,数据库连接池监视器持有活跃连接的连接监控信息,并检测连接是否存在异常,针对不同类型的异常执行不同的处理。
其中,所述连接异常的规则如:连接泄露、连接借出超时、SQL执行超时、连接池无法分配连接等;所述不同异常的执行逻辑如:发送告警、打印日志、连接池信息文件转储(dump)等。
进一步地,当检测到连接泄露时,打印的日志或者文件转储具有特定的内容和格式。
其中,所述连接泄露告警和日志具有特定的内容包括连接泄露时长阈值、连接被借出时长、连接被借出开始时间、连接被借出时的持有线程名称、连接被借出时的持有线程堆栈、连接目前持有线程的线程堆栈、连接最近一次执行的SQL;所述固定格式通过分隔符将连接借出时的信息和连接当前的信息显示为上下结构,以便对照分析。
进一步地,步骤S3具体如下:
步骤S31:对连接池分配连接活动进行拦截,将连接分配的线程名称、连接分配的线程堆栈、连接分配开始时间信息注册到当前数据库连接的监视对象中;
步骤S32:对连接池执行SQL活动进行拦截,将SQL语句,SQL参数,SQL执行开始时间,SQL执行堆栈信息注册到当前数据库连接的监视对象中;
步骤S33:对连接池回收连接的活动进行拦截,重置数据库连接的监视对象,清空所有内容。
进一步地,步骤S4具体如下:
步骤S41:巡检每个连接从分配时刻开始到当前时间,如果超过设定的阈值,则判定为疑似连接泄露,打印连接泄露告警;
步骤S42:巡检每个连接最近一次执行SQL的开始时间到当前时间,如果超过设定的阈值,则判定为疑似SQL超时导致的连接泄露,打印连接泄露告警;
步骤S43:巡检是否有连接池分配失败的事件,如果存在则打印连接池信息文件转储。
进一步地,所述数据库连接池监视器负责监视JVM中所有的连接池对象,并启动后台线程通过固定时间间隔对每个连接池进行巡检,当巡检到连接池中有存在连接长时间不释放的情况,则打印连接泄露的告警信息。
进一步地,还包括自适应学习和优化,具体如下:
步骤S71:收集数据库连接的历史活动数据,包括正常和异常情况;
步骤S72:使用机器学习算法,如聚类或决策树,训练模型来识别异常模式;
步骤S73:当新的连接活动发生时,使用模型来判断其是否可能导致异常,如果是,及时调整连接或查询参数。
进一步地,还包括预测性分析,具体如下:
步骤S81:使用步骤S71的数据;
步骤S82:使用预测模型,如时间序列分析或深度学习,预测未来可能的异常;
步骤S83:预测到异常时,提前调整连接或查询参数来预防异常。
进一步地,还包括更细粒度的监视,具体如下:
步骤S91:在监视器中加入对操作(如查询执行时间、返回的结果集大小)的监视;
步骤S92:当监视到异常操作时,执行相应的处理动作。
Druid数据库连接池的连接泄漏检测系统,应用于上述中任一项所述的Druid数据库连接池的连接泄漏检测方法,包括:
连接池管理模块,所述连接池管理模块负责管理所有的数据库连接池实例,包括连接池的创建、维护和销毁;
监视器管理模块,所述监视器管理模块负责为每个连接池和连接创建监视器,并将连接的监视器注册到连接池的监视器,监视器用于跟踪和记录数据库连接状态和活动;
事件注册模块,所述事件注册模块使用Druid连接池的拦截器技术,负责将数据库连接的活动事件注册到对应的监视器;
异常检测和处理模块,所述异常检测和处理模块通过监视器来定期检查所有连接的状态和活动,如果发现异常情况,就会触发相应的处理动作;
学习和优化模块,所述学习和优化模块收集历史连接活动数据,并使用机器学习算法训练模型,用于优化异常检测和处理策略;
预测模块,所述预测模块也使用历史连接活动数据,通过预测模型来预测未来可能出现的异常情况,并提前做出调整以防止这些异常;
用户接口模块,所述用户接口模块提供一个接口,允许用户定义自己的异常处理策略,并将这些策略应用到异常处理模块。
与现有技术相比,本发明的有益效果是:
1.本发明提供了Druid数据库连接池的连接泄漏检测方法及系统,通过监控和分析长时间未归还的连接,及时识别并处理数据库连接泄露问题,大幅提升系统的稳定性和可靠性,且能够准确判断连接泄露的原因,优化相关的数据库操作,从而提升系统的整体性能。
2.本发明提供了Druid数据库连接池的连接泄漏检测方法及系统,详细的告警日志提供了丰富的信息,有助于深入理解连接泄露的情况,包括泄露的时间、原因等,从而有利于问题的定位和诊断,如果告警日志显示短期性的性能问题导致的连接泄露,可以提前采取措施优化性能,防止问题进一步扩大。
3.本发明提供了Druid数据库连接池的连接泄漏检测方法及系统,通过告警日志帮助识别是否存在永久性的事务泄露,避免事务未能及时完成并释放连接,且通过持续的监控和分析,可以及时发现并处理可能影响系统性能和稳定性的问题,从而提高系统的维护性。
4.本发明提供了Druid数据库连接池的连接泄漏检测方法及系统,通过有效地解决连接泄露问题,可以避免数据库资源的浪费,提高资源的利用率。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种针对Druid数据库连接池的连接泄漏检测方法的流程图;
图2是本发明的系统示意图;
图3是根据本发明实施例的一种针对Druid数据库连接池的连接泄漏检测方法中连接池信息文件转储内容结构;
图4是根据本发明实施例的一种针对Druid数据库连接池的连接泄漏检测方法中连接泄露的日志内容结构;
图5是根据本发明实施例的一种针对Druid数据库连接池的连接泄漏检测方法中关键对象及其之间的关系。
实施方式
为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点,图中的组件并未按比例绘制,而类似的组件符号通常用来表示类似的组件。
根据本发明的实施例,提供了一种针对Druid数据库连接池的连接泄漏检测方法。
如图1所示,本发明具体为:
步骤S1:为每个数据库连接池实例在初始化阶段绑定一个数据库连接池监视器;
其中,所述数据库连接池监视器负责监视JVM中所有的连接池对象,并启动后台线程通过固定时间间隔对每个连接池进行巡检,当巡检到连接池中有存在连接长时间不释放的情况,则打印连接泄露的告警信息。
步骤S2:在数据库连接池初始化连接阶段,为每个数据库连接实例绑定一个数据库连接监视对象,并将该监视对象注册到当前连接池的连接池监视器。
其中,数据库连接监视对象持有该连接的持有线程,借出时间,借出时堆栈,当前线程堆栈等信息,基于这些信息可以较为便捷地分析出连接未释放的原因。
步骤S3:通过Druid连接池拦截器技术,将每个连接池的活动事件注册到当前数据库连接的监视对象;
Druid提供了强大的Filter-Chain的拦截器技术,开发者通过继承FilterAdapter即可实现定制化的JDBC拦截功能;FilterAdapter提供对连接池各个工作阶段的过滤拦截,如:新建连接,获取连接,归还连接,SQL预编译,SQL查询,事务提交,事务回滚等。
具体的,所述将每个连接池的活动事件注册到当前数据库连接的监视对象包括以下步骤:
步骤S31:重写 dataSource_getConnection 过滤器方法,在连接池分配连接时启动被分配连接的监视对象,初始化连接分配时间,保存线程堆栈快照,保存持有线程基本信息。如果连接分配失败,则打印连接池信息文件转储。具体如下
重写SQL执行的过滤器方法,如:statement_execute、statement_executeQuery、preparedStatement_execute、preparedStatement_executeQuery 等,设置连接的执行SQL情况,包括SQL语句,开始执行时间等。
重写connection_close过滤器方法,在连接归还时,重置连接的监视对象。
S4:连接池监视器遍历所有持有连接的连接监视对象对连接活动发起监视,并在监视到异常时执行动作。
具体地,所述连接池监视器的监视流程包括以下步骤:
巡检每个连接从分配时刻开始到当前时间,如果超过设定的阈值,则判定为疑似连接泄露,打印连接泄露告警;
巡检每个连接最近一次执行SQL的开始时间到当前时间,如果超过设定的阈值,则判定为疑似SQL超时导致的连接泄露,打印连接泄露告警;
巡检是否有连接池分配失败的事件,如果存在则打印连接池信息文件转储。
作为一种具体的实施方式,以下为结合日志,通过列举不同连接泄露场景对本发明做举例说明:
场景一:连接空闲长时间不释放;
当连接从连接池被借出后,如果长时间没有归还,则会打印疑似连接泄露的告警日志,样例如下。这个日志的格式是经过特殊设计的,整个日志通过一条横线分为上下两个部分,上半部分是连接被借出时的线程堆栈,下半部分是当前线程目前的堆栈,根据这个信息我们可以分析出该连接是何时被借出,是通过什么业务逻辑被借出,已经借出了多长时间,当前为什么没有归还,基于这些信息我们不难分析出是否是没有启动事务永久泄露了,还是因为性能问题短时间泄露了,以图4所示的日志为例,可以看到名称为http-nio-8080-exec-1的线程,在2023-02-01 16:46:08时间通过TestUserServiceImpl.queryTestUserList方法从连接池获取了一个连接,截至2023-02-01 16:47:43 该连接借出时间已经达到94秒,超过设定的90秒阈值,该http-nio-8080-exec-1线程目前正在sleep。
场景二:连接池无法分配连接;
当无法从连接池获取连接时,绝大多数情况是连接池已经满了,无法分配新的连接,这时候我们就要分析下目前连接池里一共有多少个连接,以及这些连接分别被哪些线程持有,当前这些线程都处于什么状态,是连接池配置小了,还是线程出了问题没有及时释放;基于本发明所述的方法,当连接池分配连接失败,会自动打印连接池的文件转储jdbcdump,把每个连接的持有线程以及其堆栈都打印出来,帮助我们排查问题,文件存储具有固定格式,如图3所示,其内容格式如表1所示:
表1:
转储格式 | 转储内容 |
Configuration(连接池的配置信息) | 包括:url,useName,initialConnections,maxConnections等基本信息。 |
Usage(连接池的使用信息) | 包括:totalConnections,freeConnections,busyConnections。 |
Connection Details(连接的持有线程信息) | 上下结构,上半部分是连接被借出时的堆栈,下半部分是连接当前持有线程的瞬时堆栈。 |
All Threads Details(所有线程的堆栈快照) | 所有线程的堆栈快照。 |
综上所述,借助于本发明的上述技术方案,通过绑定数据库连接池监视器和数据库连接监视对象,并在后台线程监视连接池和连接的活动,可以及时发现连接未正确关闭或释放的情况;通过使用连接池拦截器技术,可以在连接池的关键事件上插入自定义的监视逻辑,而不影响连接池的正常运行;通过及时检测和告警连接泄露问题,可以避免数据库连接池耗尽导致的应用程序异常或崩溃,提高了应用的稳定性和可靠性;
图5是根据本发明实施例的一种针对Druid数据库连接池的连接泄漏检测方法中关键对象及其之间的关系;
作为一种具体的实施方式,自适应学习和优化具体如下:
实施步骤:
收集数据库连接的历史活动数据,包括正常和异常情况。
使用机器学习算法,如聚类或决策树,训练模型来识别异常模式。
当新的连接活动发生时,使用模型来判断其是否可能导致异常,如果是,及时调整连接或查询参数。
作为一种具体的实施方式:如果机器学习模型发现在高负载情况下长时间运行的查询往往会导致连接超时,那么当检测到相同的情况时,可以通过限制查询的最大运行时间或优化查询来防止连接超时。
作为一种具体的实施方式,预测性分析具体如:
收集历史连接活动数据,包括正常和异常情况。
使用预测模型,如时间序列分析或深度学习,预测未来可能的异常。
当预测到可能的异常时,提前调整连接或查询参数来预防异常。
作为一种具体的实施方式,如果预测模型预测到在特定的时间段(比如每天的特定几个小时)数据库负载会异常增加,可以提前调整连接池的大小,以处理预期的高负载。
作为一种具体的实施方式:更细粒度的监视
在监视器中加入对具体操作(如查询执行时间、返回的结果集大小)的监视。
当监视到异常操作时,执行相应的处理动作。
作为一种具体的实施方式,如果监视到某个查询的执行时间超过预定阈值,可以发送警告给开发者,或自动对查询进行优化。
作为一种具体的实施方式,还包括用户定义的异常处理动作,具体如下:
提供一个接口,允许用户定义自己的异常处理策略。
当监视到异常时,调用用户定义的处理策略。
作为一种具体的实施方式,用户可以定义一个处理策略,当连接超时时自动重试,或者当连接池中的空闲连接数量低于某个阈值时自动增加连接池的大小。
Druid数据库连接池的连接泄漏检测系统,应用于上述所述的Druid数据库连接池的连接泄漏检测方法,包括:
连接池管理模块,所述连接池管理模块负责管理所有的数据库连接池实例,包括连接池的创建、维护和销毁;
监视器管理模块,所述监视器管理模块负责为每个连接池和连接创建监视器,并将连接的监视器注册到连接池的监视器,监视器用于跟踪和记录数据库连接状态和活动;
事件注册模块,所述事件注册模块使用Druid连接池的拦截器技术,负责将数据库连接的活动事件注册到对应的监视器;
异常检测和处理模块,所述异常检测和处理模块通过监视器来定期检查所有连接的状态和活动,如果发现异常情况,就会触发相应的处理动作;
学习和优化模块,所述学习和优化模块收集历史连接活动数据,并使用机器学习算法训练模型,用于优化异常检测和处理策略;
预测模块,所述预测模块也使用历史连接活动数据,通过预测模型来预测未来可能出现的异常情况,并提前做出调整以防止这些异常;
用户接口模块,所述用户接口模块提供一个接口,允许用户定义自己的异常处理策略,并将这些策略应用到异常处理模块。
综上所述,借助于本发明的上述技术方案,通过绑定数据库连接池监视器和数据库连接监视对象,并在后台线程监视连接池和连接的活动,可以及时发现连接未正确关闭或释放的情况;通过使用连接池拦截器技术,可以在连接池的关键事件上插入自定义的监视逻辑,而不影响连接池的正常运行;通过及时检测和告警连接泄露问题,可以避免数据库连接池耗尽导致的应用程序异常或崩溃,提高了应用的稳定性和可靠性;
如图2所示,这个框架显示了各个模块的功能以及它们之间的关系。用户接口模块、连接池管理模块和监视器管理模块是系统的基础部分,它们分别负责用户交互、管理数据库连接池和管理监视器。事件注册模块负责将数据库连接的活动事件注册到对应的监视器。异常检测和处理模块、学习和优化模块以及预测模块是系统的核心部分,它们分别负责处理异常、优化监控策略和预测未来可能的异常。
上述具体实施方式仅仅对本发明的优选实施方式进行描述,而并非对本发明的保护范围进行限定。在不脱离本发明设计构思和精神范畴的前提下,本领域的普通技术人员根据本发明所提供的文字描述、附图对本发明的技术方案所作出的各种变形、替代和改进,均应属于本发明的保护范畴。本发明的保护范围由权利要求确定。
Claims (9)
1.Druid数据库连接池的连接泄漏检测方法,其特征在于,包括:
步骤S1:在数据库连接池实例创建时,为数据库连接池绑定一个数据库连接池监视器,数据库连接池监视器负责监控连接池的整体状态;
步骤S2:在数据库连接池初始化阶段,为新的数据库连接实例创建数据库连接监视对象,并将数据库连接监视对象注册到对应数据库连接池监视器中;
步骤S3:使用Druid连接池的拦截器技术,将数据库连接池中的连接活动事件注册到对应的数据库连接监视对象中;
步骤S4:数据库连接池监视器开始遍历持有连接的数据库连接监视对象,并对其进行监视,当数据库连接池监视器检测到连接活动异常时,立即执行相应的处理动作;步骤S4具体如下:
步骤S41:巡检每个连接从分配时刻开始到当前时间,如果超过设定的阈值,则判定为疑似连接泄漏,打印连接泄漏告警;
步骤S42:巡检每个连接最近一次执行SQL的开始时间到当前时间,如果超过设定的阈值,则判定为疑似SQL超时导致的连接泄漏,打印连接泄漏告警;
步骤S43:巡检是否有连接池分配失败的事件,如果存在则打印连接池信息文件转储。
2.根据权利要求1所述的Druid数据库连接池的连接泄漏检测方法,其特征在于,数据库连接池监视器持有活跃连接的连接监控信息,并检测连接是否存在异常,针对不同类型的异常执行不同的处理。
3.根据权利要求1所述的Druid数据库连接池的连接泄漏检测方法,其特征在于,当检测到连接泄漏时,打印的连接泄漏告警和连接池信息文件转储具有固定的内容和格式;
其中,连接泄漏告警和连接池信息文件转储具有固定的内容包括连接泄漏时长阈值、连接被借出时长、连接被借出开始时间、连接被借出时的持有线程名称、连接被借出时的持有线程堆栈、连接目前持有线程的线程堆栈、连接最近一次执行的SQL;固定格式通过分隔符将连接借出时的信息和连接当前的信息显示为上下结构,以便对照分析。
4.根据权利要求1所述的Druid数据库连接池的连接泄漏检测方法,其特征在于,步骤S3具体如下:
步骤S31:对连接池分配连接活动进行拦截,将连接分配的线程名称、连接分配的线程堆栈、连接分配开始时间信息注册到当前数据库连接的监视对象中;
步骤S32:对连接池执行SQL活动进行拦截,将SQL语句,SQL参数,SQL执行开始时间,SQL执行堆栈信息注册到当前数据库连接的监视对象中;
步骤S33:对连接池回收连接的活动进行拦截,重置数据库连接的监视对象,清空所有内容。
5.根据权利要求1所述的Druid数据库连接池的连接泄漏检测方法,其特征在于,数据库连接池监视器负责监视JVM中所有的连接池对象,并启动后台线程通过固定时间间隔对每个连接池进行巡检,当巡检到连接池中有存在连接长时间不释放的情况,则打印连接泄漏告警。
6.根据权利要求1所述的Druid数据库连接池的连接泄漏检测方法,其特征在于,还包括自适应学习和优化,具体如下:
步骤S71:收集数据库连接的历史活动数据,包括正常和异常情况;
步骤S72:使用机器学习算法,训练模型来识别异常模式;
步骤S73:当新的连接活动发生时,使用模型来判断其是否可能导致异常,如果是,及时调整连接或查询参数。
7.根据权利要求1所述的Druid数据库连接池的连接泄漏检测方法,其特征在于,还包括预测性分析,具体如下:
步骤S81:使用步骤S71的数据;
步骤S82:使用预测模型,预测未来可能的异常;
步骤S83:预测到异常时,提前调整连接或查询参数来预防异常。
8.根据权利要求1所述的Druid数据库连接池的连接泄漏检测方法,其特征在于,还包括更细粒度的监视,具体如下:
步骤S91:在监视器中加入对操作的监视;
步骤S92:当监视到异常操作时,执行相应的处理动作。
9.Druid数据库连接池的连接泄漏检测系统,应用于上述权利要求1至8中任一项所述的Druid数据库连接池的连接泄漏检测方法,其特征在于,包括:
连接池管理模块,负责管理所有的数据库连接池实例,包括连接池的创建、维护和销毁;
监视器管理模块,负责为每个连接池和连接创建监视器,并将连接的监视器注册到连接池的监视器,监视器用于跟踪和记录数据库连接状态和活动;
事件注册模块,使用Druid连接池的拦截器技术,负责将数据库连接的活动事件注册到对应的监视器;
异常检测和处理模块,通过监视器来定期检查所有连接的状态和活动,如果发现异常情况,就会触发相应的处理动作;
学习和优化模块,收集历史连接活动数据,并使用机器学习算法训练模型,用于优化异常检测和处理策略;
预测模块,也使用历史连接活动数据,通过预测模型来预测未来可能出现的异常情况,并提前做出调整以防止这些异常;
用户接口模块,提供一个接口,允许用户定义自己的异常处理策略,并将这些策略应用到异常处理模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311021649.7A CN116737818B (zh) | 2023-08-15 | 2023-08-15 | Druid数据库连接池的连接泄漏检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311021649.7A CN116737818B (zh) | 2023-08-15 | 2023-08-15 | Druid数据库连接池的连接泄漏检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116737818A CN116737818A (zh) | 2023-09-12 |
CN116737818B true CN116737818B (zh) | 2023-12-22 |
Family
ID=87901604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311021649.7A Active CN116737818B (zh) | 2023-08-15 | 2023-08-15 | Druid数据库连接池的连接泄漏检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116737818B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117195204B (zh) * | 2023-11-01 | 2024-02-13 | 建信金融科技有限责任公司 | 异常数据检测方法、装置、电子设备及计算机可读介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008149337A2 (en) * | 2007-06-05 | 2008-12-11 | Dcf Technologies Ltd. | Devices for providing distributable middleware data proxy between application servers and database servers |
CN101840352A (zh) * | 2010-04-29 | 2010-09-22 | 中兴通讯股份有限公司 | 一种数据库连接池的监控方法及装置 |
CN102708175A (zh) * | 2012-05-07 | 2012-10-03 | 北京航空航天大学 | 一种针对数据库连接意外中断的自动重连方法及其装置 |
CN103034679A (zh) * | 2012-11-14 | 2013-04-10 | 上海百事通信息技术有限公司 | 对java操作数据库的监控系统 |
CN104980524A (zh) * | 2015-07-10 | 2015-10-14 | 上海新炬网络信息技术有限公司 | 一种weblogic连接池失效监测方法 |
CN112069237A (zh) * | 2020-07-22 | 2020-12-11 | 北京思特奇信息技术股份有限公司 | 一种集群数据库连接池的管理系统 |
CN114840272A (zh) * | 2022-07-04 | 2022-08-02 | 好享家舒适智能家居股份有限公司 | 一种多数据源动态规划及监测系统、方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11165857B2 (en) * | 2019-10-23 | 2021-11-02 | Salesforce.Com, Inc. | Connection pool anomaly detection mechanism |
-
2023
- 2023-08-15 CN CN202311021649.7A patent/CN116737818B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008149337A2 (en) * | 2007-06-05 | 2008-12-11 | Dcf Technologies Ltd. | Devices for providing distributable middleware data proxy between application servers and database servers |
CN101840352A (zh) * | 2010-04-29 | 2010-09-22 | 中兴通讯股份有限公司 | 一种数据库连接池的监控方法及装置 |
CN102708175A (zh) * | 2012-05-07 | 2012-10-03 | 北京航空航天大学 | 一种针对数据库连接意外中断的自动重连方法及其装置 |
CN103034679A (zh) * | 2012-11-14 | 2013-04-10 | 上海百事通信息技术有限公司 | 对java操作数据库的监控系统 |
CN104980524A (zh) * | 2015-07-10 | 2015-10-14 | 上海新炬网络信息技术有限公司 | 一种weblogic连接池失效监测方法 |
CN112069237A (zh) * | 2020-07-22 | 2020-12-11 | 北京思特奇信息技术股份有限公司 | 一种集群数据库连接池的管理系统 |
CN114840272A (zh) * | 2022-07-04 | 2022-08-02 | 好享家舒适智能家居股份有限公司 | 一种多数据源动态规划及监测系统、方法 |
Non-Patent Citations (1)
Title |
---|
"数据库连接池定时检测机制研究";胡玲霞 等;《科技创新导报》;第18-19页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116737818A (zh) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831585B2 (en) | System and method for online unsupervised event pattern extraction and holistic root cause analysis for distributed systems | |
Tan et al. | Adaptive system anomaly prediction for large-scale hosting infrastructures | |
US10545807B2 (en) | Method and system for acquiring parameter sets at a preset time interval and matching parameters to obtain a fault scenario type | |
Lim et al. | A log mining approach to failure analysis of enterprise telephony systems | |
CN106789306B (zh) | 通信设备软件故障检测收集恢复方法和系统 | |
CN116737818B (zh) | Druid数据库连接池的连接泄漏检测方法及系统 | |
CN107688531A (zh) | 数据库集成测试方法、装置、计算机设备及存储介质 | |
CN105337765A (zh) | 一种分布式hadoop集群故障自动诊断修复系统 | |
CN101023411A (zh) | 用于最小化计算机应用程序中的丢失的方法和系统 | |
CN1996257A (zh) | 对进程进行监控的方法和系统 | |
US8793289B2 (en) | Method and system for detecting memory leaks and copying garbage collection files | |
CN109062723A (zh) | 服务器故障的处理方法和装置 | |
CN100435106C (zh) | 应用服务器的分级再生方法 | |
WO2022093239A1 (en) | Machine learning driven automated incident prevention | |
Lou et al. | {RESIN}: A Holistic Service for Dealing with Memory Leaks in Production Cloud Infrastructure | |
WO2021045719A1 (en) | System for online unsupervised event pattern extraction | |
Gu et al. | Toward predictive failure management for distributed stream processing systems | |
CN111159051B (zh) | 死锁检测方法、装置、电子设备及可读存储介质 | |
CN108733567A (zh) | 软件资源泄露情况的监测方法及系统 | |
CN101131657A (zh) | 一种辅助cpu对芯片进行驱动的系统及方法 | |
Taerat et al. | Blue gene/l log analysis and time to interrupt estimation | |
CN103995759A (zh) | 基于核内外协同的高可用计算机系统故障处理方法及装置 | |
CN111897626A (zh) | 一种面向云计算场景的虚拟机高可靠系统和实现方法 | |
KR101973728B1 (ko) | 통합 보안 이상징후 모니터링 시스템 | |
CN113342596A (zh) | 一种设备指标的分布式监控方法、系统及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |