CN117076268A - 网页性能瓶颈归因方法、装置、系统、设备及介质 - Google Patents
网页性能瓶颈归因方法、装置、系统、设备及介质 Download PDFInfo
- Publication number
- CN117076268A CN117076268A CN202210505357.XA CN202210505357A CN117076268A CN 117076268 A CN117076268 A CN 117076268A CN 202210505357 A CN202210505357 A CN 202210505357A CN 117076268 A CN117076268 A CN 117076268A
- Authority
- CN
- China
- Prior art keywords
- bottleneck
- performance
- node
- data
- event
- 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 70
- 238000005070 sampling Methods 0.000 claims abstract description 102
- 238000004458 analytical method Methods 0.000 claims abstract description 45
- 230000006870 function Effects 0.000 claims description 95
- 230000003993 interaction Effects 0.000 claims description 19
- 238000004088 simulation Methods 0.000 claims description 14
- 230000004931 aggregating effect Effects 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 9
- 230000002776 aggregation Effects 0.000 claims description 4
- 238000004220 aggregation Methods 0.000 claims description 4
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 238000011835 investigation Methods 0.000 abstract description 8
- 230000008569 process Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 20
- 238000011056 performance test Methods 0.000 description 7
- 238000009877 rendering Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 230000010354 integration Effects 0.000 description 3
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000013480 data collection Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000003973 paint Substances 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开实施例涉及一种网页性能瓶颈归因方法、装置、系统、设备及介质,其中该方法应用于网页性能瓶颈归因系统中的性能分析模块,包括:获取待测网页的性能数据,性能数据包括跟踪数据和采样数据;确定跟踪数据包括的多个跟踪事件中的瓶颈事件;从采样数据中提取瓶颈事件的对应的目标采样数据,目标采样数据包括多个采样点,每个采样点对应一个性能瓶颈节点;根据目标采样数据中不同性能瓶颈节点之间的调用关系确定各性能瓶颈节点的瓶颈问题类型。本公开实施例不仅能够定位性能瓶颈节点而且能够确定性能瓶颈节点的瓶颈问题类型,极大地降低了瓶颈定位所占用的人工成本,提升了网页性能瓶颈的定位效率,进而有利于后续的性能瓶颈的排查归因。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种网页性能瓶颈归因方法、装置、系统、设备及介质。
背景技术
Web应用程序可以通过网页直接呈现内容给用户,性能直接影响用户体验,因此无论是PC、移动终端上的Web应用,还是各种跨端设备上的Web应用在上线发布前,都会经过在真实设备上执行性能测试。
相关技术中,对Web应用的网页进行的性能测试内容通常包括对启动时间、中央处理器(Central Processing Unit,CPU)占用率、内存、流量、存储大小、功耗等指标的测量,最后通过对指标设置阈值卡点等策略来表征其性能级别,但性能测试仅仅可以评估性能水平,后续的更深入的排查和性能瓶颈的定位需要开发人员人工实现,导致人工成本较高,效率非常低。
发明内容
为了解决上述技术问题,本公开提供了一种网页性能瓶颈归因方法、装置、系统、设备及介质。
本公开实施例提供了一种网页性能瓶颈归因方法,所述方法应用于网页性能瓶颈归因系统中的性能分析模块,包括:
获取待测网页的性能数据,所述性能数据包括跟踪数据和采样数据;
确定所述跟踪数据包括的多个跟踪事件中的瓶颈事件;
从所述采样数据中提取所述瓶颈事件的对应的目标采样数据,所述目标采样数据包括多个采样点,每个所述采样点对应一个性能瓶颈节点;
根据所述目标采样数据中不同性能瓶颈节点之间的调用关系确定各所述性能瓶颈节点的瓶颈问题类型。
本公开实施例还提供了一种网页性能瓶颈归因装置,所述装置设置于网页性能瓶颈归因系统中的性能分析模块,包括:
数据模块,用于获取待测网页的性能数据,所述性能数据包括跟踪数据和采样数据;
事件模块,用于确定所述跟踪数据包括的多个跟踪事件中的瓶颈事件;
采样模块,用于从所述采样数据中提取所述瓶颈事件的对应的目标采样数据,所述目标采样数据包括多个采样点,每个所述采样点对应一个性能瓶颈节点;
类型模块,用于根据所述目标采样数据中不同性能瓶颈节点之间的调用关系确定各所述性能瓶颈节点的瓶颈问题类型。
本公开实施例还提供了一种网页性能瓶颈归因系统,包括性能分析模块以及与所述性能分析模块通信连接的接入模块、交互模拟模块、命令模块,所述性能分析模块用于如本公开实施例提供的网页性能瓶颈归因方法。
本公开实施例还提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如本公开实施例提供的网页性能瓶颈归因方法。
本公开实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行如本公开实施例提供的网页性能瓶颈归因方法。
本公开实施例提供的技术方案与现有技术相比具有如下优点:本公开实施例提供的网页性能瓶颈归因方案,网页性能瓶颈归因系统中的性能分析模块通过获取待测网页的性能数据,性能数据包括跟踪数据和采样数据;确定跟踪数据包括的多个跟踪事件中的瓶颈事件;从采样数据中提取瓶颈事件的对应的目标采样数据,目标采样数据包括多个采样点,每个采样点对应一个性能瓶颈节点;根据目标采样数据中不同性能瓶颈节点之间的调用关系确定各性能瓶颈节点的瓶颈问题类型。采用上述方案,通过网页性能瓶颈归因系统中的性能分析模块可以基于待测网页的跟踪数据和采用数据进行自动分析定位处理,不仅能够定位性能瓶颈节点而且能够确定性能瓶颈节点的瓶颈问题类型,极大地降低了瓶颈定位所占用的人工成本,提升了网页性能瓶颈的定位效率,进而有利于后续的性能瓶颈的排查归因。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1为本公开实施例提供的一种网页性能瓶颈归因方法的流程示意图;
图2为本公开实施例提供的一种任务树的示意图;
图3为本公开实施例提供的一种目标采样数据的示意图;
图4为本公开实施例提供的另一种网页性能瓶颈归因方法的流程示意图;
图5为本公开实施例提供的一种瓶颈模式的示意图;
图6为本公开实施例提供的一种网页性能瓶颈归因系统的结构示意图;
图7为本公开实施例提供的一种网页性能瓶颈归因过程的示意图;
图8为本公开实施例提供的再一种网页性能瓶颈归因方法的流程示意图;
图9为本公开实施例提供的一种网页性能瓶颈归因装置的结构示意图;
图10为本公开实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
相关技术中,对Web应用的网页进行的性能测试内容通常包括对启动时间、中央处理器(Central Processing Unit,CPU)、内存、流量、存储大小、功耗等指标的测量,最后通过对指标设置阈值卡点等策略来表征其性能级别,但性能测试仅仅是指标采集以及评估性能水平,并不能在优化方法上提供明确的方向,需要业务开发人员更深入地进行排查和性能瓶颈的定位,开发人员的成本和压力越来越大,人工成本较高,效率非常低。为了解决上述问题,本公开实施例提供了一种网页性能瓶颈归因方法,下面结合具体的实施例对该方法进行介绍。
图1为本公开实施例提供的一种网页性能瓶颈归因方法的流程示意图,该方法可以由网页性能瓶颈归因装置执行,其中该装置可以采用软件和/或硬件实现,一般可集成在电子设备中。如图1所示,该方法应用于网页性能瓶颈归因系统中的性能分析模块,包括:
步骤101、获取待测网页的性能数据,性能数据包括跟踪数据和采样数据。
本公开实施例的网页性能瓶颈归因方法可以由网页性能瓶颈归因系统中的性能分析模块执行,网页性能瓶颈归因系统可以包括上述性能分析模块以及与性能分析模块通信连接的接入模块、交互模拟模块、命令模块等,通过各模块间的配合可以实现性能数据采集、数据整合和性能分析,本公开实施例对性能分析模块的功能进行了改进,能够定位性能瓶颈并确定瓶颈问题类型。
待测网页可以为浏览器中的任意一个需要进行性能测试的网页,具体不限。性能数据可以是在对模拟的浏览器交互过程或加载过程中采集的与网页性能相关的数据,本公开实施例中性能数据可以包括跟踪(Trace)数据、采样数据和网络数据等。跟踪数据可以是由多个跟踪事件组成的数组,每个跟踪事件可以由事件名称、事件类别、事件类型、所属进程标识及其起始时间戳、所属线程标识及其起始时间戳、属性值信息等构成。
示例性的,本公开实施例中的跟踪事件主要可以包括:render进程中的渲染主线程(CrRendererMain)系列事件、render进程中合成线程(Compositor)事件、采样(V8Sample)事件、与网络相关的后台事件、屏幕图片绘制事件等等,合成线程事件的数量可以为多个,与网络相关的后台事件可以包括资源发送请求(ResourceSendRequest)事件、网络数据拦截过滤并响应(ThrottlingURLLoader::OnReceiveResponse)事、网页链接加载客户端响应(MojoURLLoaderClient::OnReceiveResponse)事件等,屏幕图片绘制事件包括图片绘制(PaintImage)事件、布局对象渲染及绘制(PaintTimingVisualizer::LayoutObjectPainted)事件等。可以理解的是,上述跟踪事件通过分析可以得到多种类型的信息,用于进行瓶颈定位,例如合成线程事件通过分析可以获取得到的图像解码(图像解码)信息,与网络相关的后台事件通过分析可以获得网络数据、屏幕图片绘制事件通过分析可以获取图片资源布局到屏幕上的绘制信息。
采样数据可以是在网页加载或交互过程中采集的JS(JavaScript)Profile采样数据,采样数据的获取和生成也属于一种跟踪事件。采样数据中可以包括多个采样点,每个采样点可以理解为一个JS函数的调用堆栈。通过分析网络数据可以定位性能瓶颈中的加载瓶颈和解码瓶颈等资源瓶颈,定位方式如现有方案在此不进行赘述。本公开实施例以性能数据包括跟踪数据和采样数据为例进行说明,
具体地,性能分析模块可以从网页性能瓶颈归因系统中的交互模拟模块中获取在模拟待测网页交互过程和加载过程中的性能数据。
步骤102、确定跟踪数据包括的多个跟踪事件中的瓶颈事件。
其中,瓶颈事件可以理解为跟踪事件中执行时间较长影响用户交互的跟踪事件,瓶颈事件的数量可以是多个,具体不限。
在本公开实施例中,确定跟踪数据包括的多个跟踪事件中的瓶颈事件,包括:根据跟踪数据的多个跟踪事件构建待测网页的任务树,任务树中包括多个任务块,每个任务块对应一个跟踪事件;遍历任务树中的每个任务块,基于执行时间和时间阈值的对比结果确定至少一个跟踪事件中的瓶颈事件。可选的,基于执行时间和时间阈值的对比结果确定多个跟踪事件中的瓶颈事件,可以包括:将多个任务块中执行时间大于时间阈值的目标任务块所对应的跟踪事件确定为瓶颈事件。
其中,任务树可以理解为一种能够反映不同跟踪事件的包括关系的树结构,任务树中可以包括多个任务块,每个任务块可以对应一个跟踪事件,任务块的长度表示该跟踪事件的执行时间,执行时间可以表示一个跟踪事件从起始时间到结束时间之间的时间段。时间阈值可以理解为根据用户交互效果确定的最大执行时间,执行时间小于或等于时间阈值时用户交互才不会出现明显的延迟,例如可以根据以用户为中心的性能模型RAIL(Response、Animation、Idle和Load)确定的50ms作为时间阈值。
具体地,由于一个线程可以为浏览器加载逻辑的最小执行单元,性能分析模块针对浏览器中待测网页属于同一个线程上的多个跟踪事件,根据各跟踪事件的进程标识、线程标识以及执行时间戳,可以构建每个跟踪事件的任务块,任务块的长度根据执行时间戳中起始时间和结束时间所确定的执行时间确定,之后可以构建得到横轴为时间轴并以待测网页的加载任务块作为根的包括多个层级的任务树,下一层级的任务块可以是上一层级的任务块的子结构,也即下一层级的跟踪事件是上一层级的跟踪事件的子事件,不同层级之间的任务块可以通过子树指针(call)表征其结构关系;之后性能分析模块可以遍历每个任务块,将每个任务块的执行时间与时间阈值进行对比,如果一个任务块的执行时间大于时间阈值,则该任务块为目标任务块,该目标任务块对应的跟踪事件为瓶颈事件根据每个任务块的执行事件和时间阈值的对比结果确定其中执行时间较长的任务块对应的瓶颈事件。
示例性的,图2为本公开实施例提供的一种任务树的示意图,如图2所示,图中展示了一个待测网页的任务树,该任务树可以浏览器的待测网页加载任务块为根,call为子树指针,next表示统一层级不同任务块的时间先后关系,图中任务块的长度不同表示执行时间不同。
在一些实施例中,上述跟踪数据中渲染主线程系列事件中存在性能瓶颈的概率较大,可以主要分析该跟踪事件确定瓶颈事件。
步骤103、从采样数据中提取瓶颈事件的对应的目标采样数据,目标采样数据包括多个采样点,每个采样点对应一个性能瓶颈节点。
其中,目标采样数据可以是瓶颈事件对应的采样数据,由于瓶颈事件的数量为多个,目标采样数据的数量也可以为多个。确定瓶颈事件之后相当于确定了瓶颈区间,由于跟踪事件没有具体的源码位置,源码位置可以通过采样事件的采样数据来确定。
具体地,由于采样事件可以在待测网页在加载过程或交互过程中采集得到总的采样数据,性能分析模块在确定上述瓶颈事件之后,可以从总的采样数据根据瓶颈事件的执行时间可以提取对应的目标采样数据,目标采样数据可以包括多个采样点,每个采样点对应一个性能瓶颈节点,每个性能瓶颈节点表示一个JS函数调用堆栈,也即JS函数节点,并且每个采样点包括对应的性能瓶颈节点的源码数据,具体可以包括性能瓶颈节点的源码文件名称、函数名称、压缩行列号以及采样时间信息等。
示例性的,图3为本公开实施例提供的一种目标采样数据的示意图,如图3所示,图中展示了一个目标采样数据以及其对应的多个采样点,本公开实施例可以采用CDP(ChromeDevTools Protocol)协议进行采样,在此不进行赘述。
步骤104、根据目标采样数据中不同性能瓶颈节点之间的调用关系确定各性能瓶颈节点的瓶颈问题类型。
其中,瓶颈问题类型可以理解为有助于性能瓶颈归因的性能瓶颈问题的分类,可以是从代码级别或函数级别对性能瓶颈节点的JS逻辑层的分类和描述,本公开实施例中瓶颈问题类型的可以包括标准瓶颈、循环瓶颈和递归瓶颈三种。
在一些实施例中,从采样数据中提取瓶颈事件的对应的目标采样数据之后,网页性能瓶颈归因方法还可以包括:对各目标采样数据中包括的多个性能瓶颈节点根据调用关系进行聚合处理,得到多个函数调用堆栈树,每个性能瓶颈节点表示一个JS函数调用堆栈;将多个函数调用堆栈树聚合构造得到函数调用堆栈森林。
其中,函数调用堆栈树可以理解为与上述任务树类型的一种多层级的树结构,不同的是每个节点为一个性能瓶颈节点,并且不同层级之间的关系为调用关系,下一层级的节点调用上一层级的节点,上一层层级的节点为父节点,下一层级的节点可以是上一层级节点的子节点。
具体地,在步骤104之前,性能分析模块可以针对每个目标采样数据,根据其中包括的多个性能瓶颈节点的调用关系进行聚合处理,可以得到对应的函数调用堆栈树,每个目标采样数据对应一个函数调用堆栈树;之后可以将多个函数调用堆栈树聚合得到一个函数调用堆栈森林,后续可以基于函数调用堆栈森林进行瓶颈问题类型的确定。
在本公开实施例中,根据目标采样数据中不同性能瓶颈节点之间的调用关系确定各性能瓶颈节点的瓶颈问题类型,可以包括:针对函数调用堆栈森林中的每个函数调用堆栈树,从根节点开始依次遍历,通过分析调用关系确定每个性能瓶颈节点的瓶颈问题类型。
性能分析模块在上述函数调用堆栈森林的基础上,可以函数调用堆栈树为单位进行遍历,具体针对每个函数调用堆栈树可以从根节点开始自顶向下依次遍历每个子节点,通过分析调用关系确定每个性能瓶颈节点的瓶颈问题类型。
示例性的,图4为本公开实施例提供的另一种网页性能瓶颈归因方法的流程示意图,在一些实施例中,通过分析调用关系确定每个性能瓶颈节点的瓶颈问题类型,可以包括如下步骤:
步骤401、性能瓶颈节点是否存在子节点的调用,若是,则执行步骤402;否则执行步骤404。
性能分析模块针对每个性能瓶颈节点,可以确定子节点的数量,若子节点的数量为0,则可以确定不存在子节点的调用,执行步骤404;而若子节点的数量大于0,可以确定存在子节点的调用,执行步骤402。
步骤402、子节点中调用耗时小于平均调用耗时的部分子节点的调用耗时之和小于或等于预设耗时,若是,则执行步骤404;否则,执行步骤403。
其中,调用耗时可以理解为子节点对父节点执行调用操作耗费的时长,也即执行子节点的执行时间。其中,预设耗时等于该性能瓶颈节点的调用耗时与预设比例的乘积,预设比例可以根据实际情况设置,例如预设比例可以设置为80%。
具体地,性能分析模块若确定当前性能瓶颈节点存在子节点地调用时,可以获取每个子节点的调用耗时,并计算平均调用耗时;之后可以将每个子节点地调用耗时与平均调用耗时进行对比,提取其中调用耗时小于平均调用耗时的部分子节点;之后可以确定上述部分子节点的调用耗时之和,并将调用耗时之和与预设耗时进行对比,若调用耗时之和小于或等于预设耗时,则可以执行步骤404;否则,可以执行步骤403。可选的,针对上述调用耗时大于或等于平均调用耗时的子节点,可以将其作为新的父节点,返回执行步骤401。
步骤403、根据部分子节点的函数名称确定该性能瓶颈节点的瓶颈问题类型。
其中,由于每个子节点均为一个性能瓶颈节点,也即JS函数节点,函数名称可以是节点对应的JS函数的名称。
在本公开实施例中,根据部分子节点的函数名称确定该性能瓶颈节点的瓶颈问题类型,可以包括:聚合部分子节点中位于同一层级的第一类子节点的函数名称;若第一类子节点的函数名称的数量大于数量阈值,则该性能瓶颈节点的瓶颈问题类型为循环瓶颈;否则,聚合部分子节点中属于一个调用分支并位于不同层级的第二类子节点的函数名称;若第二类子节点的函数名称的数量大于数量阈值,则该性能瓶颈节点的瓶颈问题类型为递归瓶颈。
其中,第一类子节点可以为从广度层面在函数调用堆栈树中位于同一个层级的多个子节点,第二类子节点可以为从深度层面在函数调用堆栈树中属于一个调用分支并位于不同层级的多个子节点,也即该多个子节点以一个根节点为基准逐层查找子节点。数量阈值可以是针对函数名称设置的数量最大值,本公开实施例可以根据实际情况设置该数量阈值,例如数量阈值可以设置为3。循环瓶颈可以理解为因不断循环的操作造成性能瓶颈的类型,递归瓶颈可以理解为因递归操作造成性能瓶颈的类型。
具体地,性能分析模块可以广度优先,先聚合上述部分子节点中位于同一层级的第一类子节点的函数名称,并判断第一类子节点的函数名称的数量是否大于数量阈值,若是,则可以确定上述性能瓶颈节点的瓶颈问题类型为循环瓶颈;否则可以从深度层面,具体上述部分子节点中第二类子节点,并判断第二子节点的函数名称的数量是否大于数量阈值,若是,则可以确定上述性能瓶颈节点的瓶颈问题类型为递归瓶颈;若第二类子节点的函数名称的数量小于或等于数量阈值,则可以确定上述性能瓶颈节点的瓶颈问题类型为标准瓶颈。
步骤404、将该性能瓶颈节点的瓶颈问题类型确定为标准瓶颈。
当一个性能瓶颈节点不存在子节点的调用,则该性能瓶颈节点的瓶颈问题类型为标准瓶颈;当一个性能瓶颈节点存在子节点的调用,并且子节点中调用耗时小于平均调用耗时的部分子节点的调用耗时之和小于或等于预设耗时,将该性能瓶颈节点的瓶颈问题类型为标准瓶颈;和/或,当上述第二类子节点的函数名称的数量小于或等于数量阈值,该性能瓶颈节点的瓶颈问题类型为标准瓶颈。
本公开实施例提供的网页性能瓶颈归因方案,网页性能瓶颈归因系统中的性能分析模块通过获取待测网页的性能数据,性能数据包括跟踪数据和采样数据;确定跟踪数据包括的多个跟踪事件中的瓶颈事件;从采样数据中提取瓶颈事件的对应的目标采样数据,目标采样数据包括多个采样点,每个采样点对应一个性能瓶颈节点;根据目标采样数据中不同性能瓶颈节点之间的调用关系确定各性能瓶颈节点的瓶颈问题类型。采用上述方案,通过网页性能瓶颈归因系统中的性能分析模块可以基于待测网页的跟踪数据和采用数据进行自动分析定位处理,不仅能够定位性能瓶颈节点而且能够确定性能瓶颈节点的瓶颈问题类型,极大地降低了瓶颈定位所占用的人工成本,提升了网页性能瓶颈的定位效率,进而有利于后续的性能瓶颈的排查归因。
在一些实施例中,从采样数据中提取瓶颈事件的对应的目标采样数据之后,网页性能瓶颈归因方法还可以包括:根据瓶颈事件的事件名称以及性能瓶颈节点的函数名称,通过查询预先设置瓶颈模式规则,确定每个性能瓶颈节点的瓶颈模式。
其中,瓶颈模式可以是从性能角度对性能瓶颈节点的分类,也即可以是从浏览器的性能角度基于事件名称以及函数名称等对性能瓶颈节点的分类,与上述瓶颈问题类型不同,本公开实施例中瓶颈模式可以根据函数运行的具体逻辑进行定义,具体可以包括多种。瓶颈模式规则可以理解为一个能够根据事件名称或函数名称通过匹配逐层确定瓶颈模式的规则。
具体地,性能分析模块在确定目标采样数据,由于目标采样数据中每个采样点包括对应的性能瓶颈节点的源码数据,根据每个性能瓶颈节点的函数名称和所属瓶颈事件的事件名称,通过在瓶颈模式规则中进行匹配和查找,逐层确定每个性能瓶颈节点的瓶颈模式。
示例性性的,图5为本公开实施例提供的一种瓶颈模式的示意图,如图5所示,图中展示了一个瓶颈模式逐层确定的示意图,图5中在瓶颈模式规则中,一个性能瓶颈节点可以根据主线程是否使用或正在运行划分为程序(program)瓶颈和空闲(idle)瓶颈,程序瓶颈可以包括执行瓶颈和渲染瓶颈,而执行瓶颈可以包括同步瓶颈、异步瓶颈以及“逻辑未放入主线程异步执行”瓶颈,同步瓶颈可以包括循环代码逻辑瓶颈和高损耗函数逻辑瓶颈,异步瓶颈可以包括XHR请求瓶颈,“逻辑未放入主线程异步执行”瓶颈可以为执行瓶颈中未匹配任何类型的瓶颈,具体可以根据函数名称逐层确定属于的瓶颈模式;渲染瓶颈中帧动画回调(Animation FrameCallback)的函数节点可以包括帧回调次数瓶颈和帧回调逻辑瓶颈,针对样式重新计算(Recalculate Style)的函数节点的瓶颈模式为强制同步布局瓶颈,针对图层合成(Composite Layers)的函数节点的瓶颈模式为图层合成瓶颈,针对图像解码(Image Decode)的函数节点的瓶颈模式为图片解码瓶颈;渲染瓶颈可以包括资源瓶颈和本地(native)瓶颈,资源瓶颈可以包括加载瓶颈和解码瓶颈,本地瓶颈可以是针对移动端上的hybrid h5应用的本地调用,可以包括桥接(Bridge瓶颈)和其他调用瓶颈。
上述方案中,根据瓶颈事件的事件名称以及性能瓶颈节点的函数名称能够确定每个性能瓶颈节点的瓶颈模式,增加了一种瓶颈信息,有助于后续解决瓶颈问题。
在一些实施例中,网页性能瓶颈归因方法还包括:将各性能瓶颈节点的源码数据以及瓶颈问题类型进行上报,每个性能瓶颈节点的源码数据包括对应性能瓶颈节点的源码文件名称、函数名称、压缩行列号以及采样时间信息。
具体地,性能分析模块在确定各性能瓶颈节点的瓶颈问题类型之后,可以将每个性能瓶颈节点的源码数据、对应的瓶颈问题类型以及上述瓶颈模式上报给开发人员,以使开发人员可以快速解决瓶颈问题。
图6为本公开实施例提供的一种网页性能瓶颈归因系统的结构示意图,如图6所示,该网页性能瓶颈归因系统可以包括性能分析模块601以及与性能分析模块601通信连接的接入模块602、交互模拟模块603、命令模块604,性能分析模块601用于执行本公开实施例所提供的网页性能瓶颈归因方法。
参见图6,性能分析模块601可以是用于对性能瓶颈的逻辑进行分析的功能模块,该性能分析模块601中可以包括图中网络请求分析、JS函数调用栈分析以及Core WebVitalMeasure等功能模块。并且图6中网页性能瓶颈归因系统中还可以包括公共基础库605,该公共基础库605可以为性能分析模块601进行性能瓶颈分析逻辑依赖的自定义代码或三方库,具体可以包括图中的Har包转换库和Trace解析器,Trace解析器中可以包括多种类型的解析器,图中仅为示例。
接入模块602可以是外部接入接口或服务门户,能够向外部业务提供的性能归因服务的入口,如提供SDK、门户页等。
交互模拟模块603可以是对待测浏览器实现模拟控制的功能模块,可以包括图中的页面载入控制和控件交互控制以及场景系统等功能模块。
命令模块604可以是基于CDP(Chrome DevTools Protocol)协议的命令系统,可以包括浏览器控制以及性能数据采集的基础指令。该命令模块604可以包括图中的驱动器和性能数据采集的功能模块。
示例性的,图7为本公开实施例提供的一种网页性能瓶颈归因过程的示意图,图7展示了基于图6的网页性能瓶颈归因系统实现的浏览器中网页性能瓶颈归因的具体过程,可以包括性能数据采集、数据整合以及数据分析三个部分,数据采集是在模拟的浏览器交互过程中采集性能数据;数据整合是将采集到的性能数据整合成方便计算的数据结构;数据分析是对整合好的数据计算和分类。如图7所示,性能瓶颈定位的具体过程可以包括:性能测试人员通过接入模块中前端门户或外部接入接口,将待测页面或回归用例等信息传入系统,并获取分析模式、场景信息等配置信息;之后系统根据这些配置信息基于交互模拟模块和命令模块对浏览器进行模拟控制,模拟控制主要分为页面加载控制和页面交互控制两种模式,并且在浏览器模拟控制过程中,可以采集性能数据,性能数据主要包括跟踪(Trace)数据、网络数据、JS Profile采样数据等;性能分析模块结合命令模块、公共解析库对浏览器记录下的性能数据采集回收和整合,最后使用本公开实施例的上述网页性能瓶颈归因方法进行瓶颈定位。
示例性的,图8为本公开实施例提供的再一种网页性能瓶颈归因方法的流程示意图,如图8所示,图中展示了网页性能瓶颈归因的具体流程,可以包括:步骤801、开始。步骤802、输入跟踪事件。基于跟踪事件构造任务事件块(Task),并生成用于初步筛选性能瓶颈任务块的任务树。步骤803、执行时间是否大于50ms,若是,则执行步骤804;否则返回执行步骤802。获取任务树后,根据时间阈值50ms,可以初步筛选出长任务块对应的瓶颈事件。步骤804、聚合构造JS函数调用堆栈树。根据瓶颈事件的执行时间,对这个时间段内的V8Sample采样数据聚合构造出函数调用堆栈森林,函数调用堆栈森林包括多个JS函数调用堆栈树。步骤805、确定子节点数量。针对每个JS函数调用堆栈树传递其根节点,确定根节点的子节点数量。步骤806、子节点数量是否大于0,若是,则执行步骤807;否则,执行步骤817。步骤807、确定子节点的调用耗时。步骤808、判断子节点的调用耗时是否小于平均调用耗时,若是,则执行步骤809;否则,传递当前子节点,返回执行步骤805。步骤809、确定子节点的调用耗时之和。步骤810、调用耗时之和是否大于预设耗时,若是,则执行步骤811;否则执行步骤817。预设耗时等于80%的根节点(也即父节点)的调用耗时。步骤811、聚合第一类子节点的函数名称。针对调用耗时小于平均调用耗时的部分子节点,位于同一层级的子节点属于第一类子节点。步骤812、函数名称数量是否大于3,若是,则执行步骤813;否则执行步骤814。步骤813、根节点的瓶颈问题类型为循环瓶颈。之后可以执行步骤818。步骤814、聚合第二类子节点的函数名称。针对调用耗时小于平均调用耗时的部分子节点,属于一个调用分支并位于不同层级的子节点属于第二类子节点。步骤815、函数名称数量是否大于3,若是,则执行步骤816;否则执行步骤817。步骤816、根节点的瓶颈问题类型为递归瓶颈。之后可以执行步骤818。步骤817、根节点的瓶颈问题类型为标准瓶颈。步骤818、源码映射数据(sourcemap)是否存在,若是,则执行步骤819;否则,执行步骤820。步骤819、源代码反解行列号。之后可以执行步骤820。步骤820、输出源码数据。步骤821、结束。
传统的网页性能测试主要集中于对获取到的性能指标做分析,评测,以衡量网页的性能水平,当网页性能评测结果为性能很差时,缺乏对性能瓶颈的归因定位,需要依赖开发人工排查,占据了大量的研发人力成本。本方案中在网页性能瓶颈归因系统增加了更偏“白盒”开发的函数级别的瓶颈分析模块,可以更全面地利用性能数据中的跟踪数据和采样数据,并结合瓶颈发现策略,能够直接定位到如某个资源、某个请求、某个逻辑代码段,极大地降低占用的排查成本,提升了网页性能瓶颈的定位效率,进而有利于后续的性能瓶颈的排查归因。
图9为本公开实施例提供的一种网页性能瓶颈归因装置的结构示意图,该装置可由软件和/或硬件实现,一般可集成在电子设备中。如图9所示,该装置设置于网页性能瓶颈归因系统中的性能分析模块,包括:
数据模块901,用于获取待测网页的性能数据,所述性能数据包括跟踪数据和采样数据;
事件模块902,用于确定所述跟踪数据包括的多个跟踪事件中的瓶颈事件;
采样模块903,用于从所述采样数据中提取所述瓶颈事件的对应的目标采样数据,所述目标采样数据包括多个采样点,每个所述采样点对应一个性能瓶颈节点;
类型模块904,用于根据所述目标采样数据中不同性能瓶颈节点之间的调用关系确定各所述性能瓶颈节点的瓶颈问题类型。
可选的,所述事件模块902包括:
任务树单元,用于根据所述跟踪数据的多个跟踪事件构建所述待测网页的任务树,任务树中包括多个任务块,每个所述任务块对应一个所述跟踪事件;
对比单元,用于遍历所述任务树中的每个所述任务块,基于执行时间和时间阈值的对比结果确定所述至少一个跟踪事件中的瓶颈事件。
可选的,所述对比单元用于:
将所述多个任务块中执行时间大于所述时间阈值的目标任务块所对应的跟踪事件确定为所述瓶颈事件。
可选的,所述目标采样数据的数量为多个,所述装置还包括森林模块,用于:从所述采样数据中提取所述瓶颈事件的对应的目标采样数据之后,
对各所述目标采样数据中包括的所述多个性能瓶颈节点根据调用关系进行聚合处理,得到多个函数调用堆栈树,每个所述性能瓶颈节点表示一个JS函数调用堆栈;
将所述多个函数调用堆栈树聚合构造得到函数调用堆栈森林。
可选的,所述类型模块904用于:
针对所述函数调用堆栈森林中的每个函数调用堆栈树,从根节点开始依次遍历,通过分析调用关系确定每个所述性能瓶颈节点的瓶颈问题类型,所述瓶颈问题类型包括标准瓶颈、循环瓶颈和递归瓶颈。
可选的,所述类型模块904包括:
第一单元,用于若一个性能瓶颈节点不存在子节点的调用,则该性能瓶颈节点的瓶颈问题类型为所述标准瓶颈;
第二单元,用于若一个性能瓶颈节点存在子节点的调用,并且子节点中调用耗时小于平均调用耗时的部分子节点的调用耗时之和小于或等于预设耗时,将该性能瓶颈节点的瓶颈问题类型确定为所述标准瓶颈;否则,根据所述部分子节点的函数名称确定该性能瓶颈节点的瓶颈问题类型,其中,预设耗时等于该性能瓶颈节点的调用耗时与预设比例的乘积。
可选的,所述第二单元用于:
聚合所述部分子节点中位于同一层级的第一类子节点的函数名称;
若所述第一类子节点的函数名称的数量大于数量阈值,则该性能瓶颈节点的瓶颈问题类型为循环瓶颈;否则,聚合所述部分子节点中属于一个调用分支并位于不同层级的第二类子节点的函数名称;
若所述第二类子节点的函数名称的数量大于所述数量阈值,则该性能瓶颈节点的瓶颈问题类型为递归瓶颈;否则,该性能瓶颈节点的瓶颈问题类型为标准瓶颈。
可选的,所述装置还包括模式模块,用于:从所述采样数据中提取所述瓶颈事件的对应的目标采样数据之后,
根据所述瓶颈事件的事件名称以及所述性能瓶颈节点的函数名称,通过查询预先设置瓶颈模式规则,确定每个所述性能瓶颈节点的瓶颈模式,其中,所述瓶颈模式是从性能角度对性能瓶颈节点的分类。
可选的,所述装置还包括上报模块,用于:
将各所述性能瓶颈节点的源码数据以及瓶颈问题类型进行上报,每个所述性能瓶颈节点的源码数据包括对应性能瓶颈节点的源码文件名称、函数名称、压缩行列号以及采样时间信息。
本公开实施例所提供的网页性能瓶颈归因装置可执行本公开任意实施例所提供的网页性能瓶颈归因方法,具备执行方法相应的功能模块和有益效果。
本公开实施例还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现本公开任意实施例所提供的网页性能瓶颈归因方法。
图10为本公开实施例提供的一种电子设备的结构示意图。下面具体参考图10,其示出了适于用来实现本公开实施例中的电子设备1000的结构示意图。本公开实施例中的电子设备1000可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图10示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图10所示,电子设备1000可以包括处理装置(例如中央处理器、图形处理器等)1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储装置1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。在RAM 1003中,还存储有电子设备1000操作所需的各种程序和数据。处理装置1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
通常,以下装置可以连接至I/O接口1005:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置1006;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置1007;包括例如磁带、硬盘等的存储装置1008;以及通信装置1009。通信装置1009可以允许电子设备1000与其他设备进行无线或有线通信以交换数据。虽然图10示出了具有各种装置的电子设备1000,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置1009从网络上被下载和安装,或者从存储装置1008被安装,或者从ROM 1002被安装。在该计算机程序被处理装置1001执行时,执行本公开实施例的网页性能瓶颈归因方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:获取待测网页的性能数据,所述性能数据包括跟踪数据和采样数据;确定所述跟踪数据包括的多个跟踪事件中的瓶颈事件;从所述采样数据中提取所述瓶颈事件的对应的目标采样数据,所述目标采样数据包括多个采样点,每个所述采样点对应一个性能瓶颈节点;根据所述目标采样数据中不同性能瓶颈节点之间的调用关系确定各所述性能瓶颈节点的瓶颈问题类型。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (13)
1.一种网页性能瓶颈归因方法,其特征在于,应用于网页性能瓶颈归因系统中的性能分析模块,包括:
获取待测网页的性能数据,所述性能数据包括跟踪数据和采样数据;
确定所述跟踪数据包括的多个跟踪事件中的瓶颈事件;
从所述采样数据中提取所述瓶颈事件的对应的目标采样数据,所述目标采样数据包括多个采样点,每个所述采样点对应一个性能瓶颈节点;
根据所述目标采样数据中不同性能瓶颈节点之间的调用关系确定各所述性能瓶颈节点的瓶颈问题类型。
2.根据权利要求1所述的方法,其特征在于,确定所述跟踪数据包括的多个跟踪事件中的瓶颈事件,包括:
根据所述跟踪数据的多个跟踪事件构建所述待测网页的任务树,任务树中包括多个任务块,每个所述任务块对应一个所述跟踪事件;
遍历所述任务树中的每个所述任务块,基于执行时间和时间阈值的对比结果确定所述至少一个跟踪事件中的瓶颈事件。
3.根据权利要求2所述的方法,其特征在于,基于执行时间和时间阈值的对比结果确定所述多个跟踪事件中的瓶颈事件,包括:
将所述多个任务块中执行时间大于所述时间阈值的目标任务块所对应的跟踪事件确定为所述瓶颈事件。
4.根据权利要求1所述的方法,其特征在于,所述目标采样数据的数量为多个,从所述采样数据中提取所述瓶颈事件的对应的目标采样数据之后,所述方法还包括:
对各所述目标采样数据中包括的所述多个性能瓶颈节点根据调用关系进行聚合处理,得到多个函数调用堆栈树,每个所述性能瓶颈节点表示一个JS函数调用堆栈;
将所述多个函数调用堆栈树聚合构造得到函数调用堆栈森林。
5.根据权利要求4所述的方法,其特征在于,根据所述目标采样数据中不同性能瓶颈节点之间的调用关系确定各所述性能瓶颈节点的瓶颈问题类型,包括:
针对所述函数调用堆栈森林中的每个函数调用堆栈树,从根节点开始依次遍历,通过分析调用关系确定每个所述性能瓶颈节点的瓶颈问题类型,所述瓶颈问题类型包括标准瓶颈、循环瓶颈和递归瓶颈。
6.根据权利要求5所述的方法,其特征在于,通过分析调用关系确定每个所述性能瓶颈节点的瓶颈问题类型,包括:
若一个性能瓶颈节点不存在子节点的调用,则该性能瓶颈节点的瓶颈问题类型为所述标准瓶颈;
若一个性能瓶颈节点存在子节点的调用,并且子节点中调用耗时小于平均调用耗时的部分子节点的调用耗时之和小于或等于预设耗时,将该性能瓶颈节点的瓶颈问题类型确定为所述标准瓶颈;否则,根据所述部分子节点的函数名称确定该性能瓶颈节点的瓶颈问题类型,其中,预设耗时等于该性能瓶颈节点的调用耗时与预设比例的乘积。
7.根据权利要求6所述的方法,其特征在于,根据所述部分子节点的函数名称确定该性能瓶颈节点的瓶颈问题类型,包括:
聚合所述部分子节点中位于同一层级的第一类子节点的函数名称;
若所述第一类子节点的函数名称的数量大于数量阈值,则该性能瓶颈节点的瓶颈问题类型为循环瓶颈;否则,聚合所述部分子节点中属于一个调用分支并位于不同层级的第二类子节点的函数名称;
若所述第二类子节点的函数名称的数量大于所述数量阈值,则该性能瓶颈节点的瓶颈问题类型为递归瓶颈;否则,该性能瓶颈节点的瓶颈问题类型为标准瓶颈。
8.根据权利要求1所述的方法,其特征在于,从所述采样数据中提取所述瓶颈事件的对应的目标采样数据之后,所述方法还包括:
根据所述瓶颈事件的事件名称以及所述性能瓶颈节点的函数名称,通过查询预先设置瓶颈模式规则,确定每个所述性能瓶颈节点的瓶颈模式,其中,所述瓶颈模式是从性能角度对性能瓶颈节点的分类。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将各所述性能瓶颈节点的源码数据以及瓶颈问题类型进行上报,每个所述性能瓶颈节点的源码数据包括对应性能瓶颈节点的源码文件名称、函数名称、压缩行列号以及采样时间信息。
10.一种网页性能瓶颈归因装置,其特征在于,设置于网页性能瓶颈归因系统中的性能分析模块,包括:
数据模块,用于获取待测网页的性能数据,所述性能数据包括跟踪数据和采样数据;
事件模块,用于确定所述跟踪数据包括的多个跟踪事件中的瓶颈事件;
采样模块,用于从所述采样数据中提取所述瓶颈事件的对应的目标采样数据,所述目标采样数据包括多个采样点,每个所述采样点对应一个性能瓶颈节点;
类型模块,用于根据所述目标采样数据中不同性能瓶颈节点之间的调用关系确定各所述性能瓶颈节点的瓶颈问题类型。
11.一种网页性能瓶颈归因系统,其特征在于,包括性能分析模块以及与所述性能分析模块通信连接的接入模块、交互模拟模块、命令模块,所述性能分析模块用于执行上述权利要求1-9中任一所述的网页性能瓶颈归因方法。
12.一种电子设备,其特征在于,所述电子设备包括:
处理器;
用于存储所述处理器可执行指令的存储器;
所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述权利要求1-9中任一所述的网页性能瓶颈归因方法。
13.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序用于执行上述权利要求1-9中任一所述的网页性能瓶颈归因方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210505357.XA CN117076268A (zh) | 2022-05-10 | 2022-05-10 | 网页性能瓶颈归因方法、装置、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210505357.XA CN117076268A (zh) | 2022-05-10 | 2022-05-10 | 网页性能瓶颈归因方法、装置、系统、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117076268A true CN117076268A (zh) | 2023-11-17 |
Family
ID=88714001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210505357.XA Pending CN117076268A (zh) | 2022-05-10 | 2022-05-10 | 网页性能瓶颈归因方法、装置、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117076268A (zh) |
-
2022
- 2022-05-10 CN CN202210505357.XA patent/CN117076268A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kolozali et al. | A knowledge-based approach for real-time iot data stream annotation and processing | |
CN111897740B (zh) | 用户界面的测试方法、装置、电子设备及计算机可读介质 | |
CN114422267B (zh) | 流量检测方法、装置、设备及介质 | |
Bento et al. | Automated analysis of distributed tracing: Challenges and research directions | |
CN110704751A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110147327B (zh) | 一种基于多粒度的web自动化测试管理方法 | |
CN114116065B (zh) | 获取拓扑图数据对象的方法、装置、及电子设备 | |
CN111857719B (zh) | 数据处理方法、装置、电子设备及介质 | |
CN111950857A (zh) | 基于业务指标的指标体系管理方法、装置以及电子设备 | |
CN115203004A (zh) | 代码覆盖率测试方法、装置、存储介质及电子设备 | |
CN113392018B (zh) | 流量分发方法、装置、存储介质及电子设备 | |
CN116827971B (zh) | 基于区块链的碳排放数据存储与传输方法、装置与设备 | |
CN112596738B (zh) | 待测试前端页面的确定方法、装置、存储介质及电子设备 | |
CN112035256A (zh) | 一种资源分配方法、装置、电子设备及介质 | |
CN116796233A (zh) | 数据分析方法、装置、计算机可读介质及电子设备 | |
CN111552613A (zh) | 线程超时的处理方法、装置以及电子设备 | |
CN117076268A (zh) | 网页性能瓶颈归因方法、装置、系统、设备及介质 | |
CN112379967B (zh) | 模拟器检测方法、装置、设备及介质 | |
CN110955709B (zh) | 一种数据的处理方法、装置及电子设备 | |
CN112286808B (zh) | 应用程序的测试方法、装置、电子设备及介质 | |
CN114116480A (zh) | 应用程序测试覆盖率的确定方法、装置、介质及设备 | |
CN111597198A (zh) | 一种对于异构资源接入的物联网数据查询方法及相关设备 | |
CN117690063B (zh) | 电缆线路检测方法、装置、电子设备与计算机可读介质 | |
CN116880901B (zh) | 应用页面解析方法、装置、电子设备与计算机可读介质 | |
CN111026983B (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 |