CN113721920A - 一种应用组件的诊断方法、系统、电子设备及存储介质 - Google Patents
一种应用组件的诊断方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113721920A CN113721920A CN202111004657.1A CN202111004657A CN113721920A CN 113721920 A CN113721920 A CN 113721920A CN 202111004657 A CN202111004657 A CN 202111004657A CN 113721920 A CN113721920 A CN 113721920A
- Authority
- CN
- China
- Prior art keywords
- time
- span
- application component
- detected
- java
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 127
- 238000003745 diagnosis Methods 0.000 title claims abstract description 14
- 238000003860 storage Methods 0.000 title claims abstract description 11
- 239000000523 sample Substances 0.000 claims abstract description 71
- 238000002405 diagnostic procedure Methods 0.000 claims abstract description 6
- 238000004590 computer program Methods 0.000 claims description 7
- 238000012800 visualization Methods 0.000 claims description 4
- 238000002347 injection Methods 0.000 claims description 3
- 239000007924 injection Substances 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000012544 monitoring process Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 9
- 238000004458 analytical method Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种应用组件的诊断方法,所述诊断方法包括:向应用组件中注入Java采集探针;接收信息采集任务,并根据所述信息采集任务确定待检测span;利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长;其中,所述耗时时长为线程执行所述待检测span对应的代码所消耗的时长;将所述耗时时长大于预设值的待检测span设置为慢请求方法,并将所述慢请求方法对应的代码作为诊断结果进行标记。本申请能够对应用组件中慢请求方法进行自动定位,提高应用组件的运行效率。本申请还公开了一种应用组件的诊断系统、一种电子设备及一种存储介质,具有以上有益效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种应用组件的诊断方法、系统、电子设备及存储介质。
背景技术
容器技术是一种比虚拟机技术更加节省计算资源也更加灵活的虚拟化技术。随着容器技术的发展,出现了很多用于对容器进行管理的容器编排引擎。在云时代,分布式微服务架构下的应用日益丰富,纷杂的应用异常问题接踵而至,分析定位问题极其困难,给企业造成了很大的人力维护以及时间成本。
慢请求方法为应用组件代码中执行耗时较长的部分,通过对慢请求方法进行定位有利于优化代码、提高应用组件的执行效率,目前尚不存在自动确定应用组件代码中慢请求方法的方案。
因此,如何对应用组件中慢请求方法进行自动定位,提高应用组件的运行效率是本领域技术人员目前需要解决的技术问题。
发明内容
本申请的目的是提供一种应用组件的诊断方法、一种应用组件的诊断系统、一种电子设备及一种存储介质,能够对应用组件中慢请求方法进行自动定位,提高应用组件的运行效率。
为解决上述技术问题,本申请提供一种应用组件的诊断方法,该应用组件的诊断方法包括:
向应用组件中注入Java采集探针;
接收信息采集任务,并根据所述信息采集任务确定待检测span;
利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长;其中,所述耗时时长为线程执行所述待检测span对应的代码所消耗的时长;
将所述耗时时长大于预设值的待检测span设置为慢请求方法,并将所述慢请求方法对应的代码作为诊断结果进行标记。
可选的,在向应用组件中注入Java采集探针之后,还包括:
在所述应用组件加载JVM时通过匹配类名和方法名修改所述应用组件的类代码,以使每一类代码被执行时在线程栈中记录执行起始时刻和执行结束时刻。
可选的,利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长,包括:
按照预设周期采集所述线程栈快照;
利用所述Java采集探针根据当前周期的线程栈快照确定每一所述待检测span的耗时时长。
可选的,在利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长之后,还包括:
汇总所有所述待检测span与耗时时长的对应关系;
按照待检测span在应用组件中的执行顺序在用户界面中依次显示所有所述待检测span与耗时时长的对应关系。
可选的,将所述慢请求方法对应的代码在所述应用组件的代码中进行标记,包括:
在可视化平台显示所述应用组件的代码,并将所述慢请求方法对应的代码在所述应用组件的代码中设置为预设颜色。
可选的,在将所述慢请求方法对应的代码在所述应用组件的代码中进行标记之后,还包括:
向目标设备上传所述慢请求方法对应的代码和耗时时长,以便所述目标设备对所述慢请求方法对应的代码进行修改。
可选的,在利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长之后,还包括:
根据所有所述待检测span的耗时时长确定所述应用组件的总体耗时;
判断所述应用组件的总体耗时是否在标准耗时区间内;
若是,则进入将所述耗时时长大于预设值的待检测span设置为慢请求方法的步骤;
若否,则将所述待检测span的耗时时长设置为无效数据,并进入利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长的步骤。
本申请还提供了一种应用组件的诊断系统,该系统包括:
探针注入模块,用于向应用组件中注入Java采集探针;
span确定模块,用于接收信息采集任务,并根据所述信息采集任务确定待检测span;
耗时确定模块,用于利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长;其中,所述耗时时长为线程执行所述待检测span对应的代码所消耗的时长;
慢请求标记模块,用于将所述耗时时长大于预设值的待检测span设置为慢请求方法,并将所述慢请求方法对应的代码作为诊断结果进行标记。
本申请还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述应用组件的诊断方法执行的步骤。
本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述应用组件的诊断方法执行的步骤。
本申请提供了一种应用组件的诊断方法,包括:向应用组件中注入Java采集探针;接收信息采集任务,并根据所述信息采集任务确定待检测span;利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长;其中,所述耗时时长为线程执行所述待检测span对应的代码所消耗的时长;将所述耗时时长大于预设值的待检测span设置为慢请求方法,并将所述慢请求方法对应的代码作为诊断结果进行标记。
本申请向应用组件中注入Java采集探针,应用组件包括多个span的代码。在接收到信息采集任务之后,通过Java采集探针对待检测span的耗时时长进行检测,并将耗时时长大于预设值的待检测span设置为慢请求方法,进而将慢请求方法对应的代码进行标记以实现对应用组件中慢请求方法的定位。本申请借助低性能消耗、低入侵性的Java采集探针确定慢请求方法,可以应用组件中慢请求方法进行自动定位,提高应用组件的运行效率。本申请同时还提供了一种应用组件的诊断系统、一种电子设备和一种存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种应用组件的诊断方法的流程图;
图2为本申请实施例所提供的一种基于线程栈快照的代码级慢请求分析方案的原理示意图;
图3为本申请实施例所提供的一种应用组件的诊断系统的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面请参见图1,图1为本申请实施例所提供的一种应用组件的诊断方法的流程图。
具体步骤可以包括:
S101:向应用组件中注入Java采集探针;
其中,本实施例可以用于部署有Kubernetes的电子设备,上述应用组件具体为Kubernetes中部署的应用组件,用户可以在页面中选择需要监测的应用组件,并在该选中的应用组件中注入Java采集探针。Kubernetes是用于自动部署、扩展和管理容器化应用程序的开源系统。
Java采集探针又称Java探针(Java Agent),基于ByteBuddy字节码增强技术实现。Java采集探针是一种可以动态修改Java字节码的技术。Java类编译之后形成字节码被JVM执行,在JVM执行这些字节码之前获取这些字节码信息,并且通过字节码转换器对这些字节码进行修改,来完成一些额外的功能。Java采集探针通过JVM的Agent参数加载,并在程序启动时拦截指定的方法来收集数据,并定时上报给平台后端。Byte Buddy是一个开源Java库,提供了一套类型安全的API和注解,帮助开发人员轻松实现负载的字节码操作。
S102:接收信息采集任务,并根据所述信息采集任务确定待检测span;
其中,本实施例中的应用组件的代码中包括多个span(区域),每一span对应一部分应用组建的代码,即:应用组件的代码按照span被划分为多个代码区域,每一span对应的代码用于实现应用组件的部分功能。
上述信息采集任务可以为用户下发的任务,也可以为其他设备发送的任务;任务中可以包括待检测span的名称、监控间隔(即周期)、以及用于评价待检测span的耗时时长是否超时的耗时阈值(即本文中的预设值)。
信息采集任务为用于采集特定span的耗时时长的任务,在接收到耗时时长后,可以根据需要进行慢请求方法检测的span的名称确定待检测span。上述待检测span的数量可以为任意值。
S103:利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长;
其中,在应用组件的代码被执行时,每一类代码的执行起始时刻和执行结束时刻记录至线程栈中,因此Java采集探针可以根据线程栈快照中记录的执行起始时刻和执行结束时刻确定每一所述待检测span的耗时时长。上述耗时时长为线程执行所述待检测span对应的代码所消耗的时长;具体的,待检测span对应的代码中包括任意数量个类代码,根据线程栈快照中记录的执行起始时刻和执行结束时刻确定可以确定每一类代码的耗时时长,进而将类代码的耗时时长求和得到所述待检测span的耗时时长。
作为一种可行的实施方式,在向应用组件中注入Java采集探针之后,还可以在所述应用组件加载JVM时通过匹配类名和方法名修改所述应用组件的类代码,以使每一类代码被执行时在线程栈中记录执行起始时刻和执行结束时刻。
S104:将所述耗时时长大于预设值的待检测span设置为慢请求方法,并将所述慢请求方法对应的代码作为诊断结果进行标记。
其中,在得到每一待检测span的耗时时长后,可以将耗时时长与对应的预设值进行对比;如果耗时时长大于预设值,则说明待检测span对应代码的耗时过长,判定待检测span的代码为慢请求方法对应的代码,待检测span设置为慢请求方法,以便将所述慢请求方法对应的代码在所述应用组件的代码中进行标记。
本步骤可以在可视化平台显示所述应用组件的代码,并将所述慢请求方法对应的代码在所述应用组件的代码中设置为预设颜色(如红色)。
具体的,本实施例可以通过在Kubernetes上部署被监测的应用,注入采集数据的Java采集探针并定时上报线程栈,平台后端聚合汇总监测数据,实现全链路追踪和慢请求信息的展示。本实施例通过Java采集探针自动注入并获取慢请求采集任务,根据任务详情的配置参数,按照监控间隔定时检测和采集线程栈,当匹配的span的耗时大于设置的阈值时将上报给平台后端,最终将慢请求方法展现在页面中。本实施例既节省了人力和时间成本,也方便了开发人员在线快速分析并精确定位慢请求的根源。上述实施例可以包括如下几个步骤:(1)用户在平台应用界面创建Java应用组件后,则执行(2);如果已注入Java采集探针则执行(3);(2)对部署的应用注入Java采集探针;(3)新建慢请求采集任务,添加要采集的span名称、持续监控事件、span耗时阈值、监控间隔;(4)请求应用服务,制造访问流量进行数据采集及监测;(5)在方法级链路追踪页面,点击应用组件查看链路追踪详情,结合(3)中的关联的慢请求采集任务,耗时超过所设置阈值的方法会以红色字体现在追踪链路中。
本实施例向应用组件中注入Java采集探针,应用组件包括多个span的代码。在接收到信息采集任务之后,通过Java采集探针对待检测span的耗时时长进行检测,并将耗时时长大于预设值的待检测span设置为慢请求方法,进而将慢请求方法对应的代码进行标记以实现对应用组件中慢请求方法的定位。本实施例借助低性能消耗、低入侵性的Java采集探针确定慢请求方法,可以应用组件中慢请求方法进行自动定位,提高应用组件的运行效率。
作为对于图1对应实施例的进一步介绍,可以Java采集探针可以按照预设周期采集线程栈快照并更新每一待检测span的耗时时长,具体过程如下:按照预设周期采集所述线程栈快照;利用所述Java采集探针根据当前周期的线程栈快照确定每一所述待检测span的耗时时长。
作为对于图1对应实施例的进一步介绍,在利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长之后,还可以汇总所有所述待检测span与耗时时长的对应关系;按照待检测span在应用组件中的执行顺序在用户界面中依次显示所有所述待检测span与耗时时长的对应关系。通过上述方式有利于工作人员优先处理耗时较长的慢请求方法,提高应用组件的代码优化效率。
进一步的,在将所述慢请求方法对应的代码在所述应用组件的代码中进行标记之后,还可以向目标设备上传所述慢请求方法对应的代码和耗时时长,以便所述目标设备对所述慢请求方法对应的代码进行修改。通过上述过程能够实现慢请求方法的自动定位和自动修复。
可以理解的是,应用组件的运行状态受多种因素干扰,当其他组件占用较多资源时,应用组件中各个span的耗时将会增加,因此作为一种可行的实施方式,还可以存在判断应用组件的总体耗时是否正常的操作,以便在应用组件正常运行的情况下进行慢请求方法定位,具体过程如下:
步骤1:利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长之后,根据所有所述待检测span的耗时时长确定所述应用组件的总体耗时;
步骤2:判断所述应用组件的总体耗时是否在标准耗时区间内;若是,则进入图1对应实施例中S104将所述耗时时长大于预设值的待检测span设置为慢请求方法的步骤;若否,则进入步骤3;
步骤3:将所述待检测span的耗时时长设置为无效数据,并进入S103中利用Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长的步骤。
下面通过在实际应用中的实施例说明上述实施例描述的流程,本实施例提供了一种基于线程栈快照的代码级慢请求分析方案,能够帮助应用的开发人员在线快速分析和诊断代码级的慢请求问题。本实施例基于线程栈快照在分布式链路追踪的基础上进行更深层次下探到编程语言层面的代码级性能剖析方法,借助低性能消耗、低侵入性的探针采集方法的上下文信息,并按照检测间隔采集线程栈信息,最终上报汇总展现在调用链页面中,方便快速在线诊断应用的慢请求问题,降低了慢请求的精确定位难度,极大地节省了人力和时间成本。上文中,应用指:一组可对外提供服务的应用组件及相关附属信息的集合,在实际使用场景中可以对应用户的具体应用系统,通常包括一个或多个应用组件、访问地址、安全组等;分布式链路追踪指:为分布式应用的开发者提供了完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等功能的工具。
请参见图2,图2为本申请实施例所提供的一种基于线程栈快照的代码级慢请求分析方案的原理示意图,本方案的实现依赖于Kubernetes上部署被监测的应用组件,采集数据的Java采集探针,收集并分析监测数据的平台后端,展示全链路追踪的界面。图2中的平台后端用于支持数据聚合、数据分析以及驱动数据流从探针到用户界面的流程;用户界面UI用于从平台后端获取数据并进行整合,并实时展示应用的全链路追踪信息及慢请求的界面。
本方案的基本思想如下:用户在页面选择要监测的应用组件,注入Java采集探针;新建慢请求采集任务(即信息采集任务),添加要采集的span名称、持续监控事件、span耗时阈值、监控间隔;请求应用服务,制造访问流量进行数据采集及监测;在方法级链路追踪页面,点击目标任务查看慢请求详情。本方案的具体实施过程如下:
步骤1、用户在平台应用界面创建Java应用组件,并注入Java采集探针。
步骤2、应用程序加载JVM时,基于Java字节码增强技术,通过Agent在类被加载入Java虚拟机时匹配类名和方法名动态修改类代码。
步骤3、新建慢请求采集任务(即信息采集任务),添加要采集的span名称、持续监控事件、span耗时阈值、监控间隔。
步骤4、Java采集探针获取到慢请求采集任务后,会根据任务详情的配置参数,按照监控间隔定时检测和采集线程栈快照,当匹配的span的耗时大于设置的阈值时将上报给平台后端。
进一步的,在检测到慢请求方法后,可以缩短检测和采集线程栈快照的监控间隔,提高检测慢请求方法的准确度。
步骤5、平台后端接收到探针上报的数据后会进行聚合和汇总,通过trace id将整个链路串联起来,并将慢请求span特殊标记保存到存储空间中。
用户在方法级链路追踪页面会查看到整个应用组件的链路信息,以红色字体显示的方法名即为耗时超过所设置阈值的span,可以针对性的优化这些方法。
如图2所示,将Java采集探针的探测代码注入至应用组件中,以便对方法A进行方法增强。用户可以向平台后端下创建的任务,Java采集探针从平台后端获取任务并检测和采集线程栈快照,并在span的耗时大于阈值时按照监控间隔采集线程栈。Java采集探针可以向平台后端上报线程栈中采集的各span的耗时时长。平台后端可以将耗时时长大于阈值的span设置为慢请求方法,还可以将上述耗时时长进行存储。
本方案提供了一种从代码层级帮助应用的开发人员快速精准定位以及分析和诊断慢请求的方案。通过本方案基于Java字节码增强技术将追踪代码自动注入到需要采集的应用的代码中,利用线程栈快照,并对方法执行情况进行分析和汇总,结合分布式链路追踪span上下文,对代码执行速度进行估算,最终将慢请求方法展现在页面中。本方案既节省了人力和时间成本,又可以对部署的应用进行实时的性能诊断,方便开发人员在线快速分析并精确定位慢请求的根源,具有较高的应用价值。
请参见图3,图3为本申请实施例所提供的一种应用组件的诊断系统的结构示意图,该系统可以包括:
探针注入模块301,用于向应用组件中注入Java采集探针;
span确定模块302,用于接收信息采集任务,并根据所述信息采集任务确定待检测span;
耗时确定模块303,用于利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长;其中,所述耗时时长为线程执行所述待检测span对应的代码所消耗的时长;
慢请求标记模块304,用于将所述耗时时长大于预设值的待检测span设置为慢请求方法,并将所述慢请求方法对应的代码作为诊断结果进行标记。
本实施例向应用组件中注入Java采集探针,应用组件包括多个span的代码。在接收到信息采集任务之后,通过Java采集探针对待检测span的耗时时长进行检测,并将耗时时长大于预设值的待检测span设置为慢请求方法,进而将慢请求方法对应的代码进行标记以实现对应用组件中慢请求方法的定位。本实施例借助低性能消耗、低入侵性的Java采集探针确定慢请求方法,可以应用组件中慢请求方法进行自动定位,提高应用组件的运行效率。
进一步的,还包括:
代码修改模块,用于在向应用组件中注入Java采集探针之后,在所述应用组件加载JVM时通过匹配类名和方法名修改所述应用组件的类代码,以使每一类代码被执行时在线程栈中记录执行起始时刻和执行结束时刻。
进一步的,耗时确定模块303,用于按照预设周期采集所述线程栈快照;还用于利用所述Java采集探针根据当前周期的线程栈快照确定每一所述待检测span的耗时时长。
进一步的,还包括:
显示模块,用于在利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长之后,汇总所有所述待检测span与耗时时长的对应关系;还用于按照待检测span在应用组件中的执行顺序在用户界面中依次显示所有所述待检测span与耗时时长的对应关系。
进一步的,慢请求标记模块304用于在可视化平台显示所述应用组件的代码,并将所述慢请求方法对应的代码在所述应用组件的代码中设置为预设颜色。
进一步的,还包括:
信息上传模块,用于在将所述慢请求方法对应的代码在所述应用组件的代码中进行标记之后,向目标设备上传所述慢请求方法对应的代码和耗时时长,以便所述目标设备对所述慢请求方法对应的代码进行修改。
进一步的,还包括:
组件运行监测模块,用于在利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长之后,根据所有所述待检测span的耗时时长确定所述应用组件的总体耗时;还用于判断所述应用组件的总体耗时是否在标准耗时区间内;若是,则启动所述慢请求标记模块304对应的工作流程;若否,则将所述待检测span的耗时时长设置为无效数据,并启动耗时确定模块303对应的工作流程。
由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种应用组件的诊断方法,其特征在于,包括:
向应用组件中注入Java采集探针;
接收信息采集任务,并根据所述信息采集任务确定待检测span;
利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长;其中,所述耗时时长为线程执行所述待检测span对应的代码所消耗的时长;
将所述耗时时长大于预设值的待检测span设置为慢请求方法,并将所述慢请求方法对应的代码作为诊断结果进行标记。
2.根据权利要求1所述应用组件的诊断方法,其特征在于,在向应用组件中注入Java采集探针之后,还包括:
在所述应用组件加载JVM时通过匹配类名和方法名修改所述应用组件的类代码,以使每一类代码被执行时在线程栈中记录执行起始时刻和执行结束时刻。
3.根据权利要求1所述应用组件的诊断方法,其特征在于,利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长,包括:
按照预设周期采集所述线程栈快照;
利用所述Java采集探针根据当前周期的线程栈快照确定每一所述待检测span的耗时时长。
4.根据权利要求1所述应用组件的诊断方法,其特征在于,在利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长之后,还包括:
汇总所有所述待检测span与耗时时长的对应关系;
按照待检测span在应用组件中的执行顺序在用户界面中依次显示所有所述待检测span与耗时时长的对应关系。
5.根据权利要求1所述应用组件的诊断方法,其特征在于,将所述慢请求方法对应的代码在所述应用组件的代码中进行标记,包括:
在可视化平台显示所述应用组件的代码,并将所述慢请求方法对应的代码在所述应用组件的代码中设置为预设颜色。
6.根据权利要求1所述应用组件的诊断方法,其特征在于,在将所述慢请求方法对应的代码在所述应用组件的代码中进行标记之后,还包括:
向目标设备上传所述慢请求方法对应的代码和耗时时长,以便所述目标设备对所述慢请求方法对应的代码进行修改。
7.根据权利要求1至6任一项所述应用组件的诊断方法,其特征在于,在利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长之后,还包括:
根据所有所述待检测span的耗时时长确定所述应用组件的总体耗时;
判断所述应用组件的总体耗时是否在标准耗时区间内;
若是,则进入将所述耗时时长大于预设值的待检测span设置为慢请求方法的步骤;
若否,则将所述待检测span的耗时时长设置为无效数据,并进入利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长的步骤。
8.一种应用组件的诊断系统,其特征在于,包括:
探针注入模块,用于向应用组件中注入Java采集探针;
span确定模块,用于接收信息采集任务,并根据所述信息采集任务确定待检测span;
耗时确定模块,用于利用所述Java采集探针根据线程栈快照确定每一所述待检测span的耗时时长;其中,所述耗时时长为线程执行所述待检测span对应的代码所消耗的时长;
慢请求标记模块,用于将所述耗时时长大于预设值的待检测span设置为慢请求方法,并将所述慢请求方法对应的代码作为诊断结果进行标记。
9.一种电子设备,其特征在于,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1至7任一项所述应用组件的诊断方法的步骤。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如权利要求1至7任一项所述应用组件的诊断方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111004657.1A CN113721920A (zh) | 2021-08-30 | 2021-08-30 | 一种应用组件的诊断方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111004657.1A CN113721920A (zh) | 2021-08-30 | 2021-08-30 | 一种应用组件的诊断方法、系统、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113721920A true CN113721920A (zh) | 2021-11-30 |
Family
ID=78679136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111004657.1A Pending CN113721920A (zh) | 2021-08-30 | 2021-08-30 | 一种应用组件的诊断方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113721920A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114116139A (zh) * | 2022-01-24 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种Go应用中慢请求监测方法、装置、设备及介质 |
CN115858399A (zh) * | 2023-02-09 | 2023-03-28 | 创智和宇信息技术股份有限公司 | 一种利用线程栈快照进行代码级性能分析的方法和系统 |
CN116881076A (zh) * | 2023-06-30 | 2023-10-13 | 中国人民解放军32806部队 | 一种基于消息快照的多任务软件监测方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120192004A1 (en) * | 2011-01-24 | 2012-07-26 | Piotr Findeisen | Event information related to server request processing |
CN110083436A (zh) * | 2019-05-14 | 2019-08-02 | 上海理想信息产业(集团)有限公司 | 一种基于Java字节码增强技术的业务数据实时监控系统及方法 |
CN110134400A (zh) * | 2019-04-02 | 2019-08-16 | 北京奇艺世纪科技有限公司 | 数据获取方法、装置、电子设备及计算机可读存储介质 |
CN110609703A (zh) * | 2019-09-18 | 2019-12-24 | 腾讯科技(深圳)有限公司 | 性能检测工具实现方法、装置、可读存储介质及终端设备 |
CN110955438A (zh) * | 2019-12-03 | 2020-04-03 | 北京博睿宏远数据科技股份有限公司 | 一种小程序的性能监控方法、装置、设备及存储介质 |
-
2021
- 2021-08-30 CN CN202111004657.1A patent/CN113721920A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120192004A1 (en) * | 2011-01-24 | 2012-07-26 | Piotr Findeisen | Event information related to server request processing |
CN110134400A (zh) * | 2019-04-02 | 2019-08-16 | 北京奇艺世纪科技有限公司 | 数据获取方法、装置、电子设备及计算机可读存储介质 |
CN110083436A (zh) * | 2019-05-14 | 2019-08-02 | 上海理想信息产业(集团)有限公司 | 一种基于Java字节码增强技术的业务数据实时监控系统及方法 |
CN110609703A (zh) * | 2019-09-18 | 2019-12-24 | 腾讯科技(深圳)有限公司 | 性能检测工具实现方法、装置、可读存储介质及终端设备 |
CN110955438A (zh) * | 2019-12-03 | 2020-04-03 | 北京博睿宏远数据科技股份有限公司 | 一种小程序的性能监控方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
袁鑫晨;李海波;王伟;唐震;任仲山;郑莹莹;: "基于程序分析的分布式应用自动化追踪方法", 计算机系统应用, no. 11, 15 November 2016 (2016-11-15) * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114116139A (zh) * | 2022-01-24 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种Go应用中慢请求监测方法、装置、设备及介质 |
CN115858399A (zh) * | 2023-02-09 | 2023-03-28 | 创智和宇信息技术股份有限公司 | 一种利用线程栈快照进行代码级性能分析的方法和系统 |
CN116881076A (zh) * | 2023-06-30 | 2023-10-13 | 中国人民解放军32806部队 | 一种基于消息快照的多任务软件监测方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113721920A (zh) | 一种应用组件的诊断方法、系统、电子设备及存储介质 | |
CN111756575B (zh) | 存储服务器的性能分析方法及装置、电子设备 | |
CN104391795B (zh) | 一种分布式系统中自动化测试覆盖率的测试方法及系统 | |
US8141053B2 (en) | Call stack sampling using a virtual machine | |
CN110244991B (zh) | 一种微服务依赖分析方法及装置 | |
CN102681938B (zh) | 一种内存泄漏检测方法及装置 | |
CN107800757B (zh) | 用户行为记录方法及装置 | |
US10528456B2 (en) | Determining idle testing periods | |
US11422920B2 (en) | Debugging multiple instances of code using thread patterns | |
US20090089800A1 (en) | Method and Apparatus for Compensating for Instrumentation Overhead Using Execution Environment Overhead | |
CN110297772A (zh) | 自动测试系统及自动测试方法 | |
WO2017044069A1 (en) | Automatic regression identification | |
Rothlisberger et al. | Augmenting static source views in IDEs with dynamic metrics | |
Horký et al. | Performance regression unit testing: a case study | |
Koziolek et al. | A large-scale industrial case study on architecture-based software reliability analysis | |
CN104516817A (zh) | 一种内存泄漏检测方法及装置 | |
Bouzenia et al. | Resource Usage and Optimization Opportunities in Workflows of GitHub Actions | |
Wert | Performance problem diagnostics by systematic experimentation | |
CN112612697A (zh) | 一种基于字节码技术的软件缺陷测试定位方法及系统 | |
Christi et al. | Target selection for test-based resource adaptation | |
Juergens et al. | Feature profiling for evolving systems | |
CN112162908A (zh) | 基于字节码注入技术的程序调用链路监控实现方法及装置 | |
Metsa et al. | Testing non-functional requirements with aspects: An industrial case study | |
CN116680165A (zh) | 一种接口性能测试方法、装置以及设备 | |
US7581075B1 (en) | Memory pressure metric for application scalability |
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 |