本发明涉及数据处理领域,具体而言,涉及一种数据库连接泄漏处理方法及装置。
背景技术:
1、现有检查数据库连接泄漏的主要方法是静态代码扫描。静态代码扫描通过对源代码进行结构建模,分析数据库连接创建和释放的位置,来穷举连接可能未释放的逻辑分支,达到代码层面的泄漏检查的目的。
2、静态代码扫描的结果不完全可靠,其扫描结果的准确性依赖扫描工具的质量,不能保证复杂源码的扫描结果完全正确。静态代码扫描的范围有限制,对jsp、jspf等代码片段扫描结果不准确。静态代码扫描的结果有语言时效性限制,当编程语言语法变更时,扫描结果不再准确。
3、针对相关技术中通过静态代码扫描数据库连接泄漏,扫描结果不完全可靠、不准确且有语言时效性限制的问题,尚未提出解决方案。
技术实现思路
1、本发明实施例提供了一种数据库连接泄漏处理方法及装置,以至少解决相关技术中通过静态代码扫描数据库连接泄漏,扫描结果不完全可靠、不准确且有语言时效性限制的问题。
2、根据本发明的一个实施例,提供了一种数据库连接泄漏处理方法,包括:
3、在程序运行时捕获所述程序对应的工作线程申请数据库连接的连接使用行为;
4、根据所述连接使用行为确定所述数据库的连接泄漏。
5、可选地,在所述程序运行时捕获所述程序对应的工作线程申请数据库连接的连接使用行为包括:
6、在所述工作线程开始时,为所述工作线程关联一个连接追踪队列;
7、通过所述连接追踪队列追踪所述工作线程申请的所述数据库的连接使用行为。
8、可选地,通过所述连接追踪队列追踪所述工作线程申请的所述数据库的连接使用行为包括:
9、在所述工作线程中申请得到数据库连接时产生连接追踪对象,并将所述连接追踪对象放入所述连接追踪队列中;
10、在所述工作线程中关闭所述数据库连接时,通过所述连接追踪对象记录所述连接使用行为。
11、可选地,在所述工作线程中申请所述数据库连接时产生所述连接追踪对象,并将所述连接追踪对象放入所述连接追踪队列中包括:
12、在所述工作线程执行中创建连接包装类,申请一个原始连接,并通过所述连接包装类对所述原始连接进行包装;
13、为所述连接包装类的创建连接逻辑中生成所述连接追踪对象,并将所述连接追踪对象的状态设置为创建连接,保留对所述连接追踪对象的引用;
14、通过所述连接包装类将所述连接追踪对象放入所述连接追踪队列中。
15、可选地,在所述工作线程中关闭所述数据库连接时,通过所述连接追踪对象记录所述连接使用行为包括:
16、若在所述工作线程中执行连接释放,执行所述连接包装类的关闭连接逻辑;
17、将所述连接追踪对象的状态更新为关闭连接,其中,所述连接使用行为为已关闭。
18、可选地,根据所述连接使用行为确定所述数据库的连接泄漏包括:
19、从所述连接追踪队列中获取所述连接追踪对象的状态;
20、根据所述连接追踪对象的状态确定所述数据库的连接泄漏。
21、可选地,根据所述连接追踪对象的状态确定所述数据库的连接泄漏包括:
22、判断所述连接追踪队列中所述连接追踪对象的状态是否仍为已创建;
23、若所述连接追踪对象的状态仍为创建连接,确定所述数据库产生所述连接泄漏;
24、若所述连接追踪对象的状态为关闭连接,确定所述数据库未产生所述连接泄漏。
25、根据本发明的另一个实施例,还提供了一种数据库连接泄漏处理装置,包括:
26、捕获模块,用于在程序运行时捕获所述程序对应的工作线程申请数据库连接的连接使用行为;
27、确定模块,用于根据所述连接使用行为确定所述数据库的连接泄漏。
28、可选地,所述捕获模块包括:
29、关联子模块,用于在所述工作线程开始时,为所述工作线程关联一个连接追踪队列;
30、追踪子模块,用于通过所述连接追踪队列追踪所述工作线程申请的所述数据库的连接使用行为。
31、可选地,所述追踪子模块包括:
32、产生单元,用于在所述工作线程中申请得到数据库连接时产生连接追踪对象,并将所述连接追踪对象放入所述连接追踪队列中;
33、记录单元,用于在所述工作线程中关闭所述数据库连接时,通过所述连接追踪对象记录所述连接使用行为。
34、可选地,所述产生单元,还用于在所述工作线程执行中创建连接包装类,申请一个原始连接,并通过所述连接包装类对所述原始连接进行包装;为所述连接包装类的创建连接逻辑中生成所述连接追踪对象,并将所述连接追踪对象的状态设置为创建连接,保留对所述连接追踪对象的引用;通过所述连接包装类将所述连接追踪对象放入所述连接追踪队列中。
35、可选地,所述记录单元,还用于若在所述工作线程中执行连接释放,执行所述连接包装类的关闭连接逻辑;将所述连接追踪对象的状态更新为关闭连接,其中,所述连接使用行为为已关闭。
36、可选地,所述确定模块包括:
37、获取子模块,用于从所述连接追踪队列中获取所述连接追踪对象的状态;
38、确定子模块,用于根据所述连接追踪对象的状态确定所述数据库的连接泄漏。
39、可选地,所述确定子模块,还用于判断所述连接追踪队列中所述连接追踪对象的状态是否仍为已创建;若所述连接追踪对象的状态仍为创建连接,确定所述数据库产生所述连接泄漏;若所述连接追踪对象的状态为关闭连接,确定所述数据库未产生所述连接泄漏。
40、根据本发明的又一个实施例,还提供了一种计算机可读的存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
41、根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
42、通过本发明,在程序运行时捕获所述程序对应的工作线程申请数据库连接的连接使用行为;根据所述连接使用行为确定所述数据库的连接泄漏,可以解决相关技术中通过静态代码扫描数据库连接泄漏,扫描结果不完全可靠、不准确且有语言时效性限制的问题,通过在程序运行时捕获数据库连接使用行为,来分析数据库连接泄漏问题,从而保证检测结果的准确性,可靠且不受语言时效性限制。
1.一种数据库连接泄漏处理方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,在所述程序运行时捕获所述程序对应的工作线程申请数据库连接的连接使用行为包括:
3.根据权利要求2所述的方法,其特征在于,通过所述连接追踪队列追踪所述工作线程申请的所述数据库的连接使用行为包括:
4.根据权利要求3所述的方法,其特征在于,在所述工作线程中申请所述数据库连接时产生所述连接追踪对象,并将所述连接追踪对象放入所述连接追踪队列中包括:
5.根据权利要求4所述的方法,其特征在于,在所述工作线程中关闭所述数据库连接时,通过所述连接追踪对象记录所述连接使用行为包括:
6.根据权利要求5所述的方法,其特征在于,根据所述连接使用行为确定所述数据库的连接泄漏包括:
7.根据权利要求6所述的方法,其特征在于,根据所述连接追踪对象的状态确定所述数据库的连接泄漏包括:
8.一种数据库连接泄漏处理装置,其特征在于,包括:
9.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至7任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至7中任一项所述的方法。