数据库连接泄露的定位方法、装置、设备及可读存储介质制造方法及图纸

技术编号:22135580 阅读:40 留言:0更新日期:2019-09-18 09:15
本发明专利技术公开了一种数据库连接泄露的定位方法,包括:当监测到数据库访问请求时,拦截java数据库连接,得到当前线程堆栈;将当前线程堆栈缓存到线程堆栈数据集中;当拦截到java数据库连接释放时,从线程堆栈数据集中移除当前线程堆栈;对线程堆栈数据集中的线程堆栈数量进行监测;若线程堆栈数量在预设时间间隔内均大于预设值,将缓存时长大于预设时长的线程堆栈对应的java数据库连接定位为已泄露数据库连接。应用本发明专利技术实施例所提供的技术方案,较大地降低了人工成本,能够及时发现已泄露数据库连接,较大地提高了故障定位效率。本发明专利技术还公开了一种数据库连接泄露的定位装置、设备及存储介质,具有相应技术效果。

Location Method, Device, Equipment and Readable Storage Medium for Database Connection Leakage

【技术实现步骤摘要】
数据库连接泄露的定位方法、装置、设备及可读存储介质
本专利技术涉及数据库访问
,特别是涉及一种数据库连接泄露的定位方法、装置、设备及计算机可读存储介质。
技术介绍
在对数据库中的数据进行访问时需要用到java数据库连接,java数据库连接所在的数据库连接池是采用开源的DBCP连接池,开发人员在代码开发过程中偶尔忘记关闭数据库连接,导致数据库连接泄露,系统在运行一段时间后因为连接池的java数据库连接耗尽,使得整个系统无法使用,需要重启系统才能恢复正常使用。另外,在对数据库的访问量较大时,可能会造成逻辑死循环或线程休眠,也会导致数据库连接泄露。因此需要对泄露的数据库连接进行定位,以便恢复对数据库的正常访问。目前一般是通过有经验的开发人员对整个代码进行审核,关键字搜索或者代码扫描工具进行辅助分析,逐个排查,找到泄露的数据库连接,然后进行代码修改,将修改的代码再次部署,再次验证。现有的泄露数据库连接定位方式人工成本高,对于一些隐藏较深已泄露数据库连接难以定位,不能及时发现生产环境的已泄露数据库连接,不能快速定位故障。综上所述,如何有效地解决人工定位已泄露数据库连接成本高,对已泄露数据库连接发现不及时,不能快速定位故障等问题,是目前本领域技术人员急需解决的问题。
技术实现思路
本专利技术的目的是提供一种数据库连接泄露的定位方法,该方法较大地降低了人工成本,实现了对已泄露数据库连接的及时发现,较大地提高了故障定位效率;本专利技术的另一目的是提供一种数据库连接泄露的定位装置、设备及计算机可读存储介质。为解决上述技术问题,本专利技术提供如下技术方案:一种数据库连接泄露的定位方法,包括:当监测到数据库访问请求时,拦截java数据库连接,得到当前线程堆栈;将所述当前线程堆栈缓存到线程堆栈数据集中;当拦截到java数据库连接释放时,从所述线程堆栈数据集中移除所述当前线程堆栈;对所述线程堆栈数据集中的线程堆栈数量进行监测;若监测到所述线程堆栈数量在预设时间间隔内均大于预设值,则将所述线程堆栈数据集中缓存时长大于预设时长的线程堆栈对应的java数据库连接定位为已泄露数据库连接。在本专利技术的一种具体实施方式中,在将所述线程堆栈数据集中缓存时长大于预设时长的线程堆栈对应的java数据库连接定位为已泄露数据库连接之后,还包括:对所述已泄露数据库连接进行显示,以使运维人员根据所述已泄露数据库连接进行故障定位及排除操作。在本专利技术的一种具体实施方式中,对所述线程堆栈数据集中的线程堆栈数量进行监测,包括:通过WEB泄露探测程序对所述线程堆栈数据集中的线程堆栈数量进行监测。在本专利技术的一种具体实施方式中,在将所述线程堆栈数据集中缓存时长大于预设时长的线程堆栈对应的java数据库连接定位为已泄露数据库连接之后,还包括:关闭所述WEB泄露探测程序,以停止监测。一种数据库连接泄露的定位装置,包括:线程堆栈获得模块,用于当监测到数据库访问请求时,拦截java数据库连接,得到当前线程堆栈;线程堆栈缓存模块,用于将所述当前线程堆栈缓存到线程堆栈数据集中;线程堆栈移除模块,用于当拦截到java数据库连接释放时,从所述线程堆栈数据集中移除所述当前线程堆栈;线程堆栈数量监测模块,用于对所述线程堆栈数据集中的线程堆栈数量进行监测;连接定位模块,用于若监测到所述线程堆栈数量在预设时间间隔内均大于预设值,则将所述线程堆栈数据集中缓存时长大于预设时长的线程堆栈对应的java数据库连接定位为已泄露数据库连接。在本专利技术的一种具体实施方式中,还包括:连接显示模块,用于在将所述线程堆栈数据集中缓存时长大于预设时长的线程堆栈对应的java数据库连接定位为已泄露数据库连接之后,对所述已泄露数据库连接进行显示,以使运维人员根据所述已泄露数据库连接进行故障定位及排除操作。在本专利技术的一种具体实施方式中,所述线程堆栈数量监测模块具体为通过WEB泄露探测程序对所述线程堆栈数据集中的线程堆栈数量进行监测的模块。在本专利技术的一种具体实施方式中,还包括:程序关闭模块,用于在将所述线程堆栈数据集中缓存时长大于预设时长的线程堆栈对应的java数据库连接定位为已泄露数据库连接之后,关闭所述WEB泄露探测程序,以停止监测。一种数据库连接泄露的定位设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如前所述数据库连接泄露的定位方法的步骤。一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前所述数据库连接泄露的定位方法的步骤。应用本专利技术实施例所提供的方法,通过在监测到数据库访问请求时,自动拦截java数据库连接,得到当前线程堆栈,并将当前线程堆栈缓存到线程堆栈数据集中,在拦截到java数据库连接释放时,自动将当前线程堆栈移除,从而实现了对线程堆栈的自动管理,通过对线程堆栈数据集中的线程堆栈数量进行监测,当监测到线程堆栈数量在预设时间间隔内均大于预设值时,将线程堆栈数据集中缓存时长大于预设时长的线程堆栈对应的java数据库连接定位为已泄露数据库连接。相较于现有的通过人工定位已泄露数据库连接的方式,本申请较大地降低了人工成本,实现了对已泄露数据库连接的及时发现,较大地提高了故障定位效率。相应的,本专利技术实施例还提供了与上述数据库连接泄露的定位方法相对应的数据库连接泄露的定位装置、设备和计算机可读存储介质,具有上述技术效果,在此不再赘述。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例中数据库连接泄露的定位方法的一种实施流程图;图2为本专利技术实施例中数据库连接泄露的定位方法的另一种实施流程图;图3为本专利技术实施例中一种数据库连接泄露的定位装置的结构框图;图4为本专利技术实施例中一种数据库连接泄露的定位设备的结构框图。具体实施方式为了使本
的人员更好地理解本专利技术方案,下面结合附图和具体实施方式对本专利技术作进一步的详细说明。显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。实施例一:参见图1,图1为本专利技术实施例中数据库连接泄露的定位方法的一种实施流程图,该方法可以包括以下步骤:S101:当监测到数据库访问请求时,拦截java数据库连接,得到当前线程堆栈。当需要对数据库连接的泄露情况进行监控时,可以启动监控程序对数据库访问请求进行监测,当监测到数据库访问请求时,可以自动对java数据库连接进行拦截,拦截的时候会获得当前线程堆栈。JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。S102:将当前线程堆栈缓存到线程堆栈数据集中。数据库访问方在通过java数据库连接本文档来自技高网
...

【技术保护点】
1.一种数据库连接泄露的定位方法,其特征在于,包括:当监测到数据库访问请求时,拦截java数据库连接,得到当前线程堆栈;将所述当前线程堆栈缓存到线程堆栈数据集中;当拦截到java数据库连接释放时,从所述线程堆栈数据集中移除所述当前线程堆栈;对所述线程堆栈数据集中的线程堆栈数量进行监测;若监测到所述线程堆栈数量在预设时间间隔内均大于预设值,则将所述线程堆栈数据集中缓存时长大于预设时长的线程堆栈对应的java数据库连接定位为已泄露数据库连接。

【技术特征摘要】
1.一种数据库连接泄露的定位方法,其特征在于,包括:当监测到数据库访问请求时,拦截java数据库连接,得到当前线程堆栈;将所述当前线程堆栈缓存到线程堆栈数据集中;当拦截到java数据库连接释放时,从所述线程堆栈数据集中移除所述当前线程堆栈;对所述线程堆栈数据集中的线程堆栈数量进行监测;若监测到所述线程堆栈数量在预设时间间隔内均大于预设值,则将所述线程堆栈数据集中缓存时长大于预设时长的线程堆栈对应的java数据库连接定位为已泄露数据库连接。2.根据权利要求1所述的数据库连接泄露的定位方法,其特征在于,在将所述线程堆栈数据集中缓存时长大于预设时长的线程堆栈对应的java数据库连接定位为已泄露数据库连接之后,还包括:对所述已泄露数据库连接进行显示,以使运维人员根据所述已泄露数据库连接进行故障定位及排除操作。3.根据权利要求1或2所述的数据库连接泄露的定位方法,其特征在于,对所述线程堆栈数据集中的线程堆栈数量进行监测,包括:通过WEB泄露探测程序对所述线程堆栈数据集中的线程堆栈数量进行监测。4.根据权利要求3所述的数据库连接泄露的定位方法,其特征在于,在将所述线程堆栈数据集中缓存时长大于预设时长的线程堆栈对应的java数据库连接定位为已泄露数据库连接之后,还包括:关闭所述WEB泄露探测程序,以停止监测。5.一种数据库连接泄露的定位装置,其特征在于,包括:线程堆栈获得模块,用于当监测到数据库访问请求时,拦截java数据库连接,得到当前线程堆栈;线程堆栈缓存模块,用于将所述当前线程堆栈缓存到线程堆栈数据集中;线程堆栈移除模块,用于当拦截到j...

【专利技术属性】
技术研发人员:胡正莹李梓贞陈庆鸿吴永杰王一波曾良波蔡文璇
申请(专利权)人:广东电网有限责任公司广东电网有限责任公司管理科学研究院
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1