一种应用程序定位分析方法、装置、设备及存储介质与流程

文档序号:28165088发布日期:2021-12-24 22:03阅读:90来源:国知局
一种应用程序定位分析方法、装置、设备及存储介质与流程

1.本发明涉及安全监控技术领域,尤其涉及一种应用程序定位分析方法、装置、设备及存储介质。


背景技术:

2.对于基于java(计算机编程语言)虚拟机运行的应用程序而言,实时监控分析thread dump(诊断java应用问题的工具)文件是解决应用程序出现问题的有效方法。但是如果线上应用程序突发cpu高耗,运维人员只能通过人工分析应用的thread dump日志文件并结合自身的相关经验来定位问题,耗时耗力。
3.目前使用的分析thread dump文件有使用java语言的软件开发工具包(java development kit,jdk)中的top命令定位cpu最高的应用实例进程并结合jstack(java虚拟机堆栈跟踪工具)查看线程堆栈信息来分析定位cpu高耗的应用程序;又或是使用第三方分析工具对应用程序进行分析,运维人员需要实时监控应用程序,并且无法实时保存临时出现的问题信息,问题分析定位不够及时,耗时耗力。
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.根据所述原始线程信息提取线程的cpu使用率;
33.将所述线程的cpu使用率与预设cpu使用率阈值进行比较;
34.在所述线程的cpu使用率超过所述预设cpu使用率阈值时,存储所述原始线程信息,得到待分析应用程序的线程信息。
35.此外,为实现上述目的,本发明还提出一种应用程序定位分析装置,所述应用程序定位分析装置包括:
36.获取模块,用于获取待分析应用程序的线程信息;
37.定位模块,用于基于定位关键字算法对所述线程信息进行定位,得到定位结果;
38.诊断模块,用于对所述定位结果进行诊断分析,得到诊断结果。
39.此外,为实现上述目的,本发明还提出一种应用程序定位分析设备,所述应用程序定位分析设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的应用程序定位分析程序,所述应用程序定位分析程序配置为实现如上文所述的应用程序定位分析方法的步骤。
40.此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有应用程序定位分析程序,所述应用程序定位分析程序被处理器执行时实现如上文所述的应用程序定位分析方法的步骤。
41.本发明通过获取待分析应用程序的线程信息;基于定位关键字算法对所述线程信息进行定位,得到定位结果;通过原因分析算法对所述定位结果进行诊断分析,得到诊断结果;通过获取应用程序中cpu使用率超过预设使用率阈值的线程信息,并通过定位关键字算法对线程信息中的关键字进行提取,根据原因分析算法确定提取关键字的状态数据,将关
键字的状态数据与预设的原因映射关系表进行比较,得到原因项的诊断结果,通过关键字算法自动定位cpu飙高的应用程序并根据原因映射关系表进行原因分析,能够方便快速的获得分析结果。
附图说明
42.图1是本发明实施例方案涉及的硬件运行环境的应用程序定位分析设备的结构示意图;
43.图2为本发明应用程序定位分析方法第一实施例的流程示意图;
44.图3为本发明应用程序定位分析方法第二实施例的流程示意图;
45.图4为本发明应用程序定位分析方法第三实施例的流程示意图;
46.图5为本发明应用程序定位分析方法一施例的整体分析示意图;
47.图6为本发明应用程序定位分析装置第一实施例的结构框图。
48.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
49.应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
50.参照图1,图1为本发明实施例方案涉及的硬件运行环境的应用程序定位分析设备结构示意图。
51.如图1所示,该应用程序定位分析设备可以包括:处理器1001,例如中央处理器(central processing unit,cpu),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(wireless

fidelity,wi

fi)接口)。存储器1005可以是高速的随机存取存储器(random access memory,ram)存储器,也可以是稳定的非易失性存储器(non

volatile memory,nvm),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
52.本领域技术人员可以理解,图1中示出的结构并不构成对应用程序定位分析设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
53.如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及应用程序定位分析程序。
54.在图1所示的应用程序定位分析设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明应用程序定位分析设备中的处理器1001、存储器1005可以设置在应用程序定位分析设备中,所述应用程序定位分析设备通过处理器1001调用存储器1005中存储的应用程序定位分析程序,并执行本发明实施例提供的应用程序定位分析方法。
55.本发明实施例提供了一种应用程序定位分析方法,参照图2,图2为本发明一种应用程序定位分析方法第一实施例的流程示意图。
56.本实施例中,所述应用程序定位分析方法包括以下步骤:
57.步骤s10:获取待分析应用程序的线程信息。
58.需要说明的是,本发明的应用程序定位分析方法可适用于所有基于java虚拟机运行的应用程序,本实施例的执行主体可为监控分析线上应用程序的分析设备,也可为其他可以实现相同或相似功能的设备,本实施例对此不加以限定。
59.在具体实施中,开发人员编写应用程序的程序代码,并将编写程序代码放到基于java虚拟机运行的线上应用程序中,并通过shell脚本(shell script,shell命令组成的程序文件)对此应用程序进行周期性的监控,例如每10s获取一次监控的java虚拟机的应用程序的相关信息。
60.应理解的是,待分析应用程序指的是在运行中cpu(central processing unit,中央处理器)使用率超过提前设置的使用率阈值的应用程序,通过获取待分析应用程序的线程信息来对cpu占用率过高进行分析。
61.步骤s20:基于定位关键字算法对所述线程信息进行定位,得到定位结果。
62.应理解的是,定位关键字算法指的是可以对线程信息定位到业务方法或者代码块的关键字算法,定位结果指的是通过定位关键字算法得到的线程信息相关数据,例如java、package、路径等,本实施例对此不作限制。
63.在具体实施中,通过定位关键字算法提取待分析应用程序中的线程信息相关数据,并对相关数据进行保存用以进一步分析cpu占用率过高的原因。
64.步骤s30:通过原因分析算法对所述定位结果进行诊断分析,得到诊断结果。
65.需要说明的是,原因分析算法指的是可以过滤待分析应用程序中的与提取出的线程信息无关的信息数据算法,并将系统线程状态进行分类,便于将待分析的应用程序的线程状态信息与分类后的系统线程状态进行比对,快速对线程信息进行原因诊断,得到应用程序中cpu占用率过高的原因。
66.本实施例通过获取待分析应用程序的线程信息;基于定位关键字算法对所述线程信息进行定位,得到定位结果;通过原因分析算法对所述定位结果进行诊断分析,得到诊断结果;通过获取应用程序中cpu使用率超过预设使用率阈值的线程信息,并通过定位关键字算法对线程信息中的关键字进行提取,根据原因分析算法确定提取关键字的状态数据,将关键字的状态数据与预设的原因映射关系表进行比较,得到原因项的诊断结果,通过关键字算法自动定位cpu飙高的应用程序并根据原因映射关系表进行原因分析,能够方便快速的获得分析结果。
67.参考图3,图3为本发明一种应用程序定位分析方法第二实施例的流程示意图。
68.基于上述第一实施例,本实施例应用程序定位分析方法所述步骤s20,具体包括:
69.步骤s201:获取所述线程信息的原始关键字信息。
70.需要说明的是,原始关键字信息指的是提取线程信息中的所有关键字信息。
71.进一步地,在提取原始关键字信息之前,还包括:获取所述待分析应用程序的架构特征;基于所述架构特征获取对应的关键字数据;根据所述关键字数据确定定位关键字算法。
72.在具体实施中,开发人员可根据应用程序所应用的技术架构特性制定适用于当前应用程序应用的关键字,例如,若当前应用程序使用的技术栈是spring框架,mybatis框架,mysql数据库系统,就可以使用org指令,apache网页服务器,ibatis框架为相对应的关键字数据,当前应用的包的路径为cn.zhcs,则cn.zhcs也可以当做关键字数据。根据技术架构特
性及其对应的关键字数据构建定位关键字算法,方便根据架构特性快速查找定位cpu使用率过高的问题。
73.应理解的是,为了确定待分析的应用程序的技术架构特性,需要对所有应用程序进行过滤,确定待分析的应用程序进而根据待分析应用程序的架构特性制定适用的关键字,进一步地,在获取待分析应用程序的线程信息之前,还包括:
74.获取应用程序的原始线程信息;根据所述原始线程信息提取线程的cpu使用率;将所述线程的cpu使用率与预设cpu使用率阈值进行比较;在所述线程的cpu使用率超过所述预设cpu使用率阈值时,存储所述原始线程信息,得到待分析应用程序的线程信息。
75.应理解的是,原始线程信息指的是应用程序的所有线程信息,其中包括cpu的使用率信息;预设cpu使用率阈值指的是开发人员提前设置的cpu使用率范围,例如cpu使用率超过60%,即可判断应用程序的cpu飙高,根据原始线程信息提取线程的cpu使用率并将cpu使用率与预设cpu使用率阈值相比较,当线程的cpu使用率超过预设cpu使用率阈值时,则认为该应用程序的cpu飙高,会影响正常线程及应用程序的使用,造成虚拟机卡顿,影响用户使用效果,则将cpu使用率超过预设使用率阈值的线程信息持久化。cpu使用率阈值可根据应用程序的运行状况随时调整,当应用程序运行较为卡顿,可将cpu使用率阈值设置为45%或者40%,一旦应用程序的cpu使用率超过这个预设阈值,可将该应用程序的线程信息持久化,进行存储,以供接下来的分析定位;当cpu使用率为超过预设cpu使用率阈值时,可将未超过cpu使用率阈值的线程信息过滤掉,并周期性的监控应用程序。
76.需要说明的是,由于线程信息是瞬时数据,因此需要将线程信息持久化进行存储,即转化为持久数据并保存到指定的存储服务器例如mongodb中,其中,保存的内容需要包含触发时间,线程现场信息等主要信息;在对线程信息进行存储后,可获取线程信息的所有关键字信息来对关键字进行定位。
77.步骤s202:基于定位关键字算法对所述原始关键字信息进行提取,得到定位关键字信息。
78.在具体实施中,根据获取到的原始关键字信息结合定位关键字算法中的关键字数据,对原始关键字信息信息进行过滤,将不属于定位关键字算法中的关键字信息过滤掉,留下可以定位到应用程序的业务方法或者代码块的关键字信息,作为定位关键字信息。
79.步骤s203:根据所述定位关键字信息得到定位结果。
80.应理解的是,定位结果指的是可以展现线程信息中的关键字信息位置及关键字数据信息。
81.在具体实施中,通过将得到的定位关键字信息对待分析应用程序的线程信息进行查找和比对,锁定线程信息中关键字信息的位置及关键字数据。
82.本实施例通过获取所述线程信息的原始关键字信息;基于定位关键字算法对所述原始关键字信息进行提取,得到定位关键字信息;根据所述定位关键字信息得到定位结果。通过定位关键字算法对线程信息的所有关键字信息进行过滤,提取与线程信息相关的关键字信息,并根据关键字信息对线程信息进行定位,通过关键字算法能够快速定位线程信息中的关键字信息。
83.参考图4,图4为本发明一种应用程序定位分析方法第三实施例的流程示意图。
84.基于上述第一实施例,本实施例应用程序定位分析方法所述步骤s30,具体包括:
85.步骤s301:根据原因分析算法及所述定位结果得到目标关键字状态数据。
86.应理解的是,目标关键字状态数据指的是结合系统线程状态对定位结果的关键字信息进行归类,得到关键字的状态数据。
87.进一步地,所述根据原因分析算法及所述定位结果得到目标关键字状态数据,包括:
88.获取系统线程状态等级;基于原因分析算法对所述系统线程状态等级进行分析,得到系统线程状态信息;将所述关键字信息与所述线程状态信息进行比对,得到关键字状态信息;根据预设结构化规则对所述关键字状态信息进行转换,得到目标关键字状态数据。
89.在具体实现中,由于系统线程状态主要分为:死锁状态(deadlock),可运行状态(runnable),阻塞状态(blocked),等待资源状态(waiting on condition),等待获取监视器状态(waiting for monitor entry),对象等待状态(in objectwait)这六种状态,并且一般blocked是伴随着runnable出现的,waiting for monitor entry一般也会伴随着runnable出现,所以可以根据系统线程状态及线程状态特征将状态进行分类得到死锁状态(deadlock),可运行状态(runnable)以及等待资源状态(waiting on condition)这三种等级,并根据状态的处理优先程度对这三种等级进行排序,得到第一至第三共三种等级,第一等级为最重要的级别。
90.应理解的是,将关键字信息与分类后的线程状态信息进行比对,可得到关键字的状态信息,即包含关键字信息的线程的状态信息。例如,关键字状态信息为in objectwait或者waiting for monitor entry,则可确定关键字的状态为等待资源状态,例如关键字状态信息为runnable,则可确定关键字的状态为运行状态。
91.在具体实施中,预设结构化规则指的是按照提前设置的对象简谱(javascript object notation,json)或者可扩展标记语言(extensible markup language,xml)等规则进行结构化整理,目标关键字状态数据指的是将关键字状态信息进行转换存储得到的数据。
92.需要说明的是,通过确定关键字的状态信息对关键字状态进行分类,并将分类结果按照预设结构化规则对关键字状态信息进行转换,通过将信息结构化转换并存储为数据格式,得到目标关键字状态数据,便于对线程信息更好的分析。
93.步骤s302:根据预设原因映射关系表对所述目标关键字状态数据进行原因项诊断,得到原因项诊断结果。
94.需要说明的是,预设原因映射关系表指的是开发人员提前设定的将定位关键字与可能出现的原因做一个映射的表格,表格可存储于虚拟机服务器中或者云服务器中,本实施例对此不加以限定,原因项指的是预设原因映射关系表中的具体元素,主要包括:入选等级(deadlock,runnable,waiting on condition)、重要级别、定位到的方法全路径以及可能导致的原因等,原因项可根据用户需求继续增加;原因项诊断指的是具体分析原因列表元素的规则。
95.在具体实施中,根据目标关键字状态数据查询预设原因映射关系表,例如当通过定位关键字算法及原因分析算法得到的目标关键字状态数据为org.apache.ibatis关键字,状态为deadlock,则可初步根据原因映射关系表对目标关键字状态数据进行原因项诊断,得到诊断结果为本次cpu飙高的原因是因为数据库死锁引起的。
96.步骤s303:将所述原因项诊断结果作为诊断结果。
97.在具体实施中,根据原因项诊断结果可得到初步的待分析应用程序的cpu飙高原因,并将此原因项诊断结果作为此次分析的诊断结果,如图5所示,获取应用程序中的线程信息,并将线程信息中的cpu使用率与预设预警阈值规则进行比较,当cpu使用率超过预设预警阈值时,将线程信息持久化处理,作为永久数据存储到服务器,根据原因分析算法中的异常分析组件并结合定位关键字算法对存储的线程信息数据进行分析,得到诊断结果。
98.需要说明的是,在对待分析应用程序进行分析诊断得到诊断结果后,可将根据诊断结果进行预警,将诊断结果发送至报警组件,使开发人员根据初步的诊断结果结合存储的线程信息再次进行具体分析cpu飙高的原因,得到最终的目标分析结果,通过最终的目标分析结果可得到cpu飙高的准确原因,并将此目标分析结果完善至预设原因映射关系表中,得到最新的预设原因关系表,当再次出现这种原因时,可直接根据更新后的预设原因映射关系表对应用程序进行分析,得到准确的分析结果,不用开发人员再次进行二次分析,解放了人力成本。
99.本实施例通过根据原因分析算法及所述定位结果得到目标关键字状态数据;根据预设原因映射关系表对所述目标关键字状态数据进行原因项诊断,得到原因项诊断结果;将所述原因项诊断结果作为诊断结果;通过原因分析算法对得到的关键字信息进行处理生成结构化数据,并将生成的结构化数据与预设原因映射关系表进行原因项诊断,将结构化数据与可能出现的原因进行映射,得到原因诊断结果,通过定位关键字数据与原因映射关系表结合,快速的分析cpu占用率过高的原因,得到诊断的效果,有效减少人为操作,用户体验更佳。
100.参照图6,图6为本发明应用程序定位分析装置第一实施例的结构框图。
101.如图6所示,本发明实施例提出的应用程序定位分析装置包括:
102.获取模块10,用于获取待分析应用程序的线程信息。
103.定位模块20,用于基于定位关键字算法对所述线程信息进行定位,得到定位结果。
104.诊断模块30,用于对所述定位结果进行诊断分析,得到诊断结果。
105.本实施例通过获取待分析应用程序的线程信息;基于定位关键字算法对所述线程信息进行定位,得到定位结果;通过原因分析算法对所述定位结果进行诊断分析,得到诊断结果;通过获取应用程序中cpu使用率超过预设使用率阈值的线程信息,并通过定位关键字算法对线程信息中的关键字进行提取,根据原因分析算法确定提取关键字的状态数据,将关键字的状态数据与预设的原因映射关系表进行比较,得到原因项的诊断结果,通过关键字算法自动定位cpu飙高的应用程序并根据原因映射关系表进行原因分析,能够方便快速的获得分析结果。
106.在一实施例中,所述定位模块20,还用于获取所述待分析应用程序的架构特征;基于所述架构特征获取对应的关键字数据;根据所述关键字数据确定定位关键字算法。
107.在一实施例中,所述定位模块20,还用于获取所述线程信息的原始关键字信息;基于定位关键字算法对所述原始关键字信息进行提取,得到定位关键字信息;根据所述定位关键字信息得到定位结果。
108.在一实施例中,所述诊断模块30,还用于根据原因分析算法及所述定位结果得到目标关键字状态数据;根据预设原因映射关系表对所述目标关键字状态数据进行原因项诊
断,得到原因项诊断结果;将所述原因项诊断结果作为诊断结果。
109.在一实施例中,所述诊断模块30,还用于根据所述诊断结果进行预警,并根据所述诊断结果对所述待分析应用程序进行二次分析,得到目标分析结果;基于所述目标分析结果对所述预设原因映射关系表进行更新。
110.在一实施例中,所述诊断模块30,还用于获取系统线程状态等级;基于原因分析算法对所述系统线程状态等级进行分析,得到系统线程状态信息;将所述关键字信息与所述线程状态信息进行比对,得到关键字状态信息;根据预设结构化规则对所述关键字状态信息进行转换,得到目标关键字状态数据。
111.在一实施例中,所述获取模块10,还用于获取应用程序的原始线程信息;根据所述原始线程信息提取线程的cpu使用率;将所述线程的cpu使用率与预设cpu使用率阈值进行比较;在所述线程的cpu使用率超过所述预设cpu使用率阈值时,存储所述原始线程信息,得到待分析应用程序的线程信息。
112.此外,为实现上述目的,本发明还提出一种应用程序定位分析设备,所述应用程序定位分析设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的应用程序定位分析程序,所述应用程序定位分析程序配置为实现如上文所述的应用程序定位分析方法的步骤。
113.由于本应用程序定位分析设备采用了上述所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
114.此外,本发明实施例还提出一种存储介质,所述存储介质上存储有应用程序定位分析程序,所述应用程序定位分析程序被处理器执行时实现如上文所述的应用程序定位分析方法的步骤。
115.由于本存储介质采用了上述所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
116.应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
117.需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
118.另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的应用程序定位分析方法,此处不再赘述。
119.此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
120.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
121.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做
出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(read only memory,rom)/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
122.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1