一种面向Web应用的性能瓶颈精准定位系统

文档序号:168593 发布日期:2021-10-29 浏览:31次 >En<

阅读说明:本技术 一种面向Web应用的性能瓶颈精准定位系统 (Web application-oriented performance bottleneck accurate positioning system ) 是由 李晖 丁玺润 闵圣天 于 2021-06-07 设计创作,主要内容包括:一种面向Web应用的性能瓶颈精准定位系统,包括前端的数据展示模块和数据查询模块以及后端的系统监控模块、数据存储模块、异常检测模块和瓶颈定位模块。本发明一种面向Web应用的性能瓶颈精准定位系统,分层定位考虑到了各层级性能指标之间的相互影响,通过分层异常检测,可以清楚的知道是哪一层级的性能指标数据出现了异常,增加了瓶颈定位的准确度。定位到瓶颈发生在具体某个层级后,通过与出现瓶颈出现时的调用链路数据进行匹配来定位到系统相应代码,实现性能瓶颈的代码级精准定位。(A performance bottleneck accurate positioning system for Web application comprises a data display module and a data query module at the front end, and a system monitoring module, a data storage module, an anomaly detection module and a bottleneck positioning module at the rear end. According to the performance bottleneck accurate positioning system for Web application, the mutual influence among the performance indexes of each level is considered in the layered positioning, the performance index data of which level is abnormal can be clearly known through layered abnormal detection, and the bottleneck positioning accuracy is improved. After the bottleneck is positioned at a specific certain level, the corresponding codes of the system are positioned by matching with the calling link data when the bottleneck appears, so that the code-level accurate positioning of the performance bottleneck is realized.)

一种面向Web应用的性能瓶颈精准定位系统

技术领域

本发明涉及计算机领域,特别提供了一种面向Web应用的性能瓶颈精准定位系统。

背景技术

微服务架构是目前复杂Web应用的主流架构模式,其本质是将整体业务拆分为多个服务,前后台的业务流会经过多个微服务之间的调用和传递,这使得Web系统内部调用过程变得极其复杂,当系统出现异常时,查找和定位异常情况变得较为困难。Web应用作为现在的主流应用形式,有着大量用户群体,服务质量下降使得用户体验不佳,会给企业带来巨大经济损失,这对Web应用服务性能提出了越来越高的要求。服务质量的下降通常由系统性能瓶颈而引起,如何快速解决系统性能瓶颈问题,是提高应用性能从而为用户提供满意服务的关键。

性能指标数据体现了系统的运行状态,是衡量系统性能问题的主要参考依据。系统产生性能瓶颈的同时往往伴随着性能指标的异常,所以性能瓶颈的分析主要是对性能指标数据进行异常检测。现有的性能瓶颈分析方法主要是对性能指标中的硬件资源指标(CPU、IO、内存等)进行分析。Web应用通常具有N层结构,其各层级组件之间相互影响,性能指标之间也相互影响,仅分析硬件资源指标而忽略其他性能指标(如中间件指标、数据库指标)对硬件资源指标的影响,往往难以发现系统产生瓶颈的真正原因,降低系统性能优化的效率。

性能瓶颈多和应用程序的代码缺陷有关,低质代码的应用程序通常容易成为硬件资源瓶颈的导火线。在分析系统性能瓶颈问题时,如果不仅能定位到瓶颈发生的准确位置,还能精准定位到相应的代码,这对于分析瓶颈产生的真正原因是非常有帮助的,具有很高的研究与应用价值。

发明内容

为了现有技术存在的技术缺陷,本发明提供了一种面向Web应用的性能瓶颈精准定位系统,可以有效解决背景技术中的问题。

本发明通过以下技术方案实现:

一种面向Web应用的性能瓶颈精准定位系统,包括前端的数据展示模块和数据查询模块以及后端的系统监控模块、数据存储模块、异常检测模块和瓶颈定位模块,所述数据展示模块用于对收集到的数据及异常检测结果进行可视化显示;所述数据查询模块用于对特定时间范围的数据进行查询;所述系统监控模块用于通过应用性能管理工具对被研究系统进行监控来收集数据,并反馈给前端数据展示模块进行展示;所述异常检测模块用于通过对性能指标数据进行检测,并将异常检测结果反馈给瓶颈定位模块进行分析;所述瓶颈定位模块用于根据异常检测模块反馈的信息,结合瓶颈定位策略确定瓶颈发生的位置,然后通过和调用链路进行瓶颈点时间戳匹配,精准定位到相应代码,并将定位结果反馈给数据展示模块进行展示;所述性能指标数据及链路数据存储在MySQL数据库中。

有益地,所述定位系统还包括数据库模块,所述数据库包括调用链路信息表(segment)、JVM_CPU信息表(jvm_cpu)、堆内存信息表(jvm_memory_heap)、GC信息表(gc_count)、SQL信息表(top_n_sql),所述数据库用于存储调用链路数据和性能指标数据。

有益地,所述调用链路信息表(segment)用于存放系统每一次请求的调用路径信息。

有益地,所述JVM_CPU信息表(jvm_cpu)用于存放系统JVM_CPU的利用率等相关信息。

有益地,所述堆内存信息表(jvm_memory_heap)用于存放系统堆内存的利用率等相关信息。

有益地,所述GC信息表(gc_count)用于存放系统进行GC操作的次数、时间等相关信息。

有益地,所述SQL信息表(top_n_sql)用于记录部分执行时间较长的SQL语句的执行时间、链路ID等相关信息。

进一步,所述性能瓶颈精准定位系统的开发环境是基于Windows10系统进行的,采用Java作为开发语言,系统集成开发工具使用IEDA和WebStorm,所述定位系统采用前后端分离的开发模式,后台开发框架采用Spring+SpringMVC+SpringBoot+MyBatis,前端采用Vue+Element-ui+Echarts进行开发。

进一步,所述定位系统还包括系统接口模块,所述系统接口模块用于完成对外提供服务能,与前端页面进行交互,用户对前端页面的操作会向接口发送相应的请求对数据表进行操作,这些请求通过调用service来实现前端页面和数据库的交互。在实际使用中,若是查询操作,直接通过查询数据库得出结果返回给前端即可;若是异常检测操作,则需要调用后端数据检测定位模块,然后将分析定位结果反馈给前端。

更进一步,所述定位系统还包括检测定位模块,所述检测定位模块用于通过对性能指标数据进行异常检测并根据性能瓶颈定位策略确认瓶颈发生的层级,并结合调用链路定位到具体的代码。在实际使用中,首先根据前端传入的时间范围查询出对应的数据;其次通过组合检测器对选择范围内的性能指标数据做异常检测;然后根据瓶颈定位策略进行分析并给出瓶颈定位结果;最后将调用链路数据的时间戳和瓶颈发生时的时间戳进行匹配,精准定位到相应的代码,并将定位结果返回到前端进行显示。

进一步,所述系统监控模块用于通过应用性能管理工具SkyWalking对被监测系统Uniplore进行监控,将性能指标数据及调用链路数据实时更新到数据库中,所述SkyWalking主要分为两部分:Agent探针和Collection Server,所述将Agent探针与被监控系统部署在服务器A同级目录并修改对应Tomcat服务器的配置文件,Agent以秒为间隔向服务器B上的数据收集服务Collection Server发送数据,Collection Server则实时将数据存入数据库MySQL中,MySQL与Collection Server安装在同一服务器节点上。

有益地,所述定位系统的运行流程包括以下步骤:

S1、通过系统监控工具收集Web应用系统不同类型的性能指标时序数据;

S2、对数据进行预处理;

S3、利用数据标定工具对用于训练异常检测模型的数据进行手工标定;

S4、通过对性能指标数据(时间序列)进行异常检测得到数据异常点;

S5、对异常检测结果进行分析来确定瓶颈位置;

S6、通过匹配调用链路实现瓶颈代码级精准定位。

更为有益地,在通过系统监控工具收集Web应用系统不同类型的性能指标时序数据的过程中,基于一个实际应用的一站式大数据分析平台Uniplore,利用APM工具对其进行监控来收集性能指标数据和调用链路数据,收集的数据包括硬件资源指标CPU利用率、中间件指标GC频率、数据库指标SQL执行时长等。

更为有益地,在对数据进行预处理的过程中,主要是对收集到性能指标数据进行整合,提取出所需的数据,包括数据格式转换、各层级性能指标数据时间戳对齐、剔除无用字段等。

更为有益地,在利用数据标定工具对用于训练异常检测模型的数据进行手工标定的过程中,使用数据标定工具Trainset对数据进行人工标定,在数据标定页面导入需要进行标定的数据文件(CSV格式),需包含时间戳(timestamp)、值(value)及label属性,其中时间戳须为ISO8601格式,如2019-03-13T21:11:29+00:00或2019-03-13T21:11:29Z,在做标定之前需将原本的时间戳(如20190313211129)转换为该格式;label默认值均为0(非异常点标签为0),主要分为两个部分:整体数据的展示、选定范围内数据的放大显示。

更为有益地,在通过对性能指标数据(时间序列)进行异常检测得到数据异常点的过程中,基于所收集数据的异常类型设计不同的单检测器,并将不同的单检测器组合成一种可以检测多种异常类型的组合检测器来对系统性能指标数据进行异常检测,以此来提高异常检测的精确度。

进一步,所述单检测器的检测算子分为两种,一种是变换算子(转换器)、一种是检测算子(检测器),所述但检测器包括用于检测外部突出异常值的阈值检测器、用于检测外部突出异常值的分位检测器和用于检测异常聚类的聚类检测器。

进一步,所述阈值计算公式为,Min-c<Gused<Max+c,其中Min和Max为设定的最小和最大阈值,c为(Min,Max)递增、递减因子,当数据值超过设定的范围,则被视为异常值。

进一步,所述分位检测器的公式为,MinQ-c×R,MaxQ+c×R;MinQ=M×qmin;MaxQ=M×qmax,其中M为数据最大值,qmin为低分位百分比,qmax为高分位百分比,R=MinQ-MaxQ,MinQ和MaxQ分别为分位区间的最小值和最大值,c为区间缩放因子,用于针对不同的数据对区间范围进行精准的调试,当数值超出了设定的分位区间范围,则被视为异常值。

更进一步,所述聚类检测器的运行包括以下步骤:随机选取k的中心,C=c1c2c3...ck;计算每个数据点与中心的欧式距离,argmindis(ci,x)2,ci∈C;根据公式更新中心,重复步骤2和3直到中心数据点不再发生变化。通过聚类检测器可以一次性检测聚类的多个异常值。

有益地,所述单检测器还包括转换器,所述转换器基于时间窗口滑动,对时序数据点进行变换,变换后的数据点特性不变,整体曲线趋势发生变化,转换器的实现过程为:使用两个紧邻滑动窗口在时序数据上滑动,针对时序数据中心xc,其中xc∈{x1 x2 x3...xt};对数据中心点紧邻滑动计算agg(agg∈[median,mean]),mindian和mean为求取时间窗口内中位数和均值的函数,即ai=agg(wi),ai+1=agg(wi+1);计算数据中心点转换后的值,xc=abs(ai+1-ai)。

有益地,所述组合检测器由转换器和不同的单检测器串联或并联组成,被检测数据在经过一个转换器和三个检测器后得到最终的异常检测结果,首先将复杂的时序数据曲线通过转换器分解变换,转换成简单的易于处理的曲线;然后通过阈值检测器和分位检测器检测转换器变换后的曲线;最后将检测结果输入到聚类检测器以检测未被检测到的聚集性异常。

进一步,在对异常检测结果进行分析来确定瓶颈位置的过程中,问题优先级由大到小分别为服务端问题、网络问题、客服端问题,其中硬件方面主要分析硬件资源指标,软件方面主要涉及中间件指标、数据库指标及应用程序代码。

进一步,根据性能瓶颈的分布特点,将性能瓶颈主要划分为三类,硬件层瓶颈、中间件层瓶颈和应用程序瓶颈,所述硬件层瓶颈是指由于服务器硬件资源利用率过高所导致的系统性能问题,包括CPU、内存、磁盘IO方面的问题;所述中间件层瓶颈包括Web服务器、应用服务器等应用软件及数据库系统方面的瓶颈,例如,中间件平台上配置的JDBC连接池的参数设置不合理造成的瓶颈;所述应用程序瓶颈是指由开发人员针对使用者的某种应用目的所编写的应用软件,应用程序层瓶颈主要包括由程序设计不合理(串行处理、请求的处理线程不够、无缓冲、无缓存等)、数据库设计缺陷、JVM参数不合理、慢SQL、程序架构规划不合理等导致的性能瓶颈。

有益地,性能瓶颈的定位具体流程为:首先对硬件层资源指标进行异常检测;然后对出现异常时段的中间件层或数据库层性能指标进行异常检测,得到同时段不同层级指标数据的异常情况;最后根据基于不同层级性能指标之间的相关性制定的不同的判断依据来确定瓶颈真正出现的层级。通过分层定位将瓶颈定位到具体不同的层级,可以提高后续对调用链路的分析效率。

有益地,在通过匹配调用链路实现瓶颈代码级精准定位的过程中,各层级间的性能瓶颈相互影响,下层的性能指标出现瓶颈时很可能导致其上层性能指标也出现瓶颈。通常情况下,上层的部件出现瓶颈不会影响下层部件性能,正常的下层部件都是在上层部件的约束范围内的,但下层部件若出现瓶颈,在一定时间范围内必将影响上层部件。例如,若性能瓶颈是由于应用程序造成的,系统问题会首先在Web服务器上得到体现,随着Web服务器错误增加,消耗掉更多的硬件资源,导致硬件资源利用率升高,造成硬件层瓶颈。

本发明的有益效果:一种面向Web应用的性能瓶颈精准定位系统,分层定位考虑到了各层级性能指标之间的相互影响,通过分层异常检测,可以清楚的知道是哪一层级的性能指标数据出现了异常,增加了瓶颈定位的准确度。定位到瓶颈发生在具体某个层级后,通过与出现瓶颈出现时的调用链路数据进行匹配来定位到系统相应代码,实现性能瓶颈的代码级精准定位。结合瓶颈出现的层级对应用程序进行深入分析确定瓶颈产生的真正原因,优化应用程序,更高效的实现系统性能优化基于性能指标数据,结合Web应用层级架构,根据不同层级性能指标数据之间的相关性,提出了性能瓶颈分层定位策略,可以更加准确的定位到瓶颈发生的位置。基于SkyWalking收集到的性能指标时序数据的异常类型,设计了一种可以检测多种异常类型的组合检测器,可以更加全面的检测出不同类型的异常,提高异常检测的准确度。利用系统监控工具,基于性能指标时序数据和请求调用链路,设计并实现了一个面向Web应用的性能瓶颈精准定位系统,使得性能瓶颈的精准定位对于分析瓶颈产生的原因更加的真实。

附图说明

图1为本发明一种面向Web应用的性能瓶颈精准定位系统框架图;

图2为本发明中数据库关系模式图;

图3为本发明中调用链路表结构图;

图4为本发明中JVM-CPU表结构图;

图5为本发明中堆内存信息表结构图;

图6为本发明中GC信息表结构图;

图7为本发明中SQL信息表结构图;

图8为本发明中前后端交互示意图;

图9为本发明中后端数据处理流程;

图10为本发明中系统监控部署示意图;

图11为本发明中性能瓶颈定位思路框架图;

图12为本发明中单检测器的工作示意图;

图13为本发明中组合检测器的工作示意图;

图14为本发明中瓶颈分析的流程图;

图15为本发明中性能瓶颈定位流程图;

图16为本发明中性能瓶颈分层示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,一种面向Web应用的性能瓶颈精准定位系统,主要包括前端的数据展示模块和数据查询模块以及后端的系统监控模块、数据存储模块、异常检测模块和瓶颈定位模块,所述数据展示模块用于对收集到的数据及异常检测结果进行可视化显示;所述数据查询模块用于对特定时间范围的数据进行查询;所述系统监控模块用于通过应用性能管理工具对被研究系统进行监控来收集数据,并反馈给前端数据展示模块进行展示;所述异常检测模块用于通过对性能指标数据进行检测,并将异常检测结果反馈给瓶颈定位模块进行分析;所述瓶颈定位模块用于根据异常检测模块反馈的信息,结合瓶颈定位策略确定瓶颈发生的位置,然后通过和调用链路进行瓶颈点时间戳匹配,精准定位到相应代码,并将定位结果反馈给数据展示模块进行展示;所述性能指标数据及链路数据存储在MySQL数据库中。

具体地,如图2所示,所述定位系统还包括数据库模块,所述数据库包括调用链路信息表(segment)、JVM_CPU信息表(jvm_cpu)、堆内存信息表(jvm_memory_heap)、GC信息表(gc_count)、SQL信息表(top_n_sql),所述数据库用于存储调用链路数据和性能指标数据。

在一个优选的实施方式中,如图3所示,所述调用链路信息表(segment)用于存放系统每一次请求的调用路径信息。

在一个优选的实施方式中,如图4所示,所述JVM_CPU信息表(jvm_cpu)用于存放系统JVM_CPU的利用率等相关信息。

在一个优选的实施方式中,如图5所示,所述堆内存信息表(jvm_memory_heap)用于存放系统堆内存的利用率等相关信息。

在一个优选的实施方式中,如图6所示,所述GC信息表(gc_count)用于存放系统进行GC操作的次数、时间等相关信息。

在一个优选的实施方式中,如图7所示,所述SQL信息表(top_n_sql)用于记录部分执行时间较长的SQL语句的执行时间、链路ID等相关信息。

作为优选,所述性能瓶颈精准定位系统的开发环境是基于Windows10系统进行的,采用Java作为开发语言,系统集成开发工具使用IEDA和WebStorm,所述定位系统采用前后端分离的开发模式,后台开发框架采用Spring+SpringMVC+SpringBoot+MyBatis,前端采用Vue+Element-ui+Echarts进行开发。

具体地,如图8所示,所述定位系统还包括系统接口模块,所述系统接口模块用于完成对外提供服务能,与前端页面进行交互,用户对前端页面的操作会向接口发送相应的请求对数据表进行操作,这些请求通过调用service来实现前端页面和数据库的交互。在实际使用中,若是查询操作,直接通过查询数据库得出结果返回给前端即可;若是异常检测操作,则需要调用后端数据检测定位模块,然后将分析定位结果反馈给前端。

具体地,如图9所示,所述定位系统还包括检测定位模块,所述检测定位模块用于通过对性能指标数据进行异常检测并根据性能瓶颈定位策略确认瓶颈发生的层级,并结合调用链路定位到具体的代码。在实际使用中,首先根据前端传入的时间范围查询出对应的数据;其次通过组合检测器对选择范围内的性能指标数据做异常检测;然后根据瓶颈定位策略进行分析并给出瓶颈定位结果;最后将调用链路数据的时间戳和瓶颈发生时的时间戳进行匹配,精准定位到相应的代码,并将定位结果返回到前端进行显示。

具体地,如图10所示,所述系统监控模块用于通过应用性能管理工具SkyWalking对被监测系统Uniplore进行监控,将性能指标数据及调用链路数据实时更新到数据库中,所述SkyWalking主要分为两部分:Agent探针和Collection Server,所述将Agent探针与被监控系统部署在服务器A同级目录并修改对应Tomcat服务器的配置文件,Agent以秒为间隔向服务器B上的数据收集服务Collection Server发送数据,Collection Server则实时将数据存入数据库MySQL中,MySQL与Collection Server安装在同一服务器节点上。

具体地,如图11所示,所述定位系统的运行流程包括以下步骤:

S1、通过系统监控工具收集Web应用系统不同类型的性能指标时序数据;

S2、对数据进行预处理;

S3、利用数据标定工具对用于训练异常检测模型的数据进行手工标定;

S4、通过对性能指标数据(时间序列)进行异常检测得到数据异常点;

S5、对异常检测结果进行分析来确定瓶颈位置;

S6、通过匹配调用链路实现瓶颈代码级精准定位。

具体地,在通过系统监控工具收集Web应用系统不同类型的性能指标时序数据的过程中,基于一个实际应用的一站式大数据分析平台Uniplore,利用APM工具对其进行监控来收集性能指标数据和调用链路数据,收集的数据包括硬件资源指标CPU利用率、中间件指标GC频率、数据库指标SQL执行时长等。

具体地,在对数据进行预处理的过程中,主要是对收集到性能指标数据进行整合,提取出所需的数据,包括数据格式转换、各层级性能指标数据时间戳对齐、剔除无用字段等。

具体地,在利用数据标定工具对用于训练异常检测模型的数据进行手工标定的过程中,使用数据标定工具Trainset对数据进行人工标定,在数据标定页面导入需要进行标定的数据文件(CSV格式),需包含时间戳(timestamp)、值(value)及label属性,其中时间戳须为ISO8601格式,如2019-03-13T21:11:29+00:00或2019-03-13T21:11:29Z,在做标定之前需将原本的时间戳(如20190313211129)转换为该格式;label默认值均为0(非异常点标签为0),主要分为两个部分:整体数据的展示、选定范围内数据的放大显示。

具体地,在通过对性能指标数据(时间序列)进行异常检测得到数据异常点的过程中,基于所收集数据的异常类型设计不同的单检测器,并将不同的单检测器组合成一种可以检测多种异常类型的组合检测器来对系统性能指标数据进行异常检测,以此来提高异常检测的精确度。

作为优选,如图12所示,所述单检测器的检测算子分为两种,一种是变换算子(转换器)、一种是检测算子(检测器),所述但检测器包括用于检测外部突出异常值的阈值检测器、用于检测外部突出异常值的分位检测器和用于检测异常聚类的聚类检测器。

具体地,所述阈值计算公式为,Min-c<Gused<Max+c,其中Min和Max为设定的最小和最大阈值,c为(Min,Max)递增、递减因子,当数据值超过设定的范围,则被视为异常值。

具体地,所述分位检测器的公式为,MinQ-c×R,MaxQ+c×R;MinQ=M×qmin;MaxQ=M×qmax,其中M为数据最大值,qmin为低分位百分比,qmax为高分位百分比,R=MinQ-MaxQ,MinQ和MaxQ分别为分位区间的最小值和最大值,c为区间缩放因子,用于针对不同的数据对区间范围进行精准的调试,当数值超出了设定的分位区间范围,则被视为异常值。

具体地,所述聚类检测器的运行包括以下步骤:随机选取k的中心,C=c1 c2c3...ck;计算每个数据点与中心的欧式距离,argmindis(ci,x)2,ci∈C;根据公式更新中心, 重复步骤2和3直到中心数据点不再发生变化。通过聚类检测器可以一次性检测聚类的多个异常值。

具体的,所述单检测器还包括转换器,所述转换器基于时间窗口滑动,对时序数据点进行变换,变换后的数据点特性不变,整体曲线趋势发生变化,转换器的实现过程为:使用两个紧邻滑动窗口在时序数据上滑动,针对时序数据中心xc,其中xc∈{x1 x2 x3...xt};对数据中心点紧邻滑动计算agg(agg∈[median,mean]),mindian和mean为求取时间窗口内中位数和均值的函数,即ai=agg(wi),ai+1=agg(wi+1);计算数据中心点转换后的值,xc=abs(ai+1-ai)。

具体地,如图13所示,所述组合检测器由转换器和不同的单检测器串联或并联组成,被检测数据在经过一个转换器和三个检测器后得到最终的异常检测结果,首先将复杂的时序数据曲线通过转换器分解变换,转换成简单的易于处理的曲线;然后通过阈值检测器和分位检测器检测转换器变换后的曲线;最后将检测结果输入到聚类检测器以检测未被检测到的聚集性异常。

具体地,如图14所示,在对异常检测结果进行分析来确定瓶颈位置的过程中,问题优先级由大到小分别为服务端问题、网络问题、客服端问题,其中硬件方面主要分析硬件资源指标,软件方面主要涉及中间件指标、数据库指标及应用程序代码。

在一个优选的实施方式中,根据性能瓶颈的分布特点,将性能瓶颈主要划分为三类,硬件层瓶颈、中间件层瓶颈和应用程序瓶颈,所述硬件层瓶颈是指由于服务器硬件资源利用率过高所导致的系统性能问题,包括CPU、内存、磁盘IO方面的问题;所述中间件层瓶颈包括Web服务器、应用服务器等应用软件及数据库系统方面的瓶颈,例如,中间件平台上配置的JDBC连接池的参数设置不合理造成的瓶颈;所述应用程序瓶颈是指由开发人员针对使用者的某种应用目的所编写的应用软件,应用程序层瓶颈主要包括由程序设计不合理(串行处理、请求的处理线程不够、无缓冲、无缓存等)、数据库设计缺陷、JVM参数不合理、慢SQL、程序架构规划不合理等导致的性能瓶颈。

具体地,如图15所示,性能瓶颈的定位具体流程为:首先对硬件层资源指标进行异常检测;然后对出现异常时段的中间件层或数据库层性能指标进行异常检测,得到同时段不同层级指标数据的异常情况;最后根据基于不同层级性能指标之间的相关性制定的不同的判断依据来确定瓶颈真正出现的层级。通过分层定位将瓶颈定位到具体不同的层级,可以提高后续对调用链路的分析效率。

具体地,如图16所示,在通过匹配调用链路实现瓶颈代码级精准定位的过程中,各层级间的性能瓶颈相互影响,下层的性能指标出现瓶颈时很可能导致其上层性能指标也出现瓶颈。通常情况下,上层的部件出现瓶颈不会影响下层部件性能,正常的下层部件都是在上层部件的约束范围内的,但下层部件若出现瓶颈,在一定时间范围内必将影响上层部件。例如,若性能瓶颈是由于应用程序造成的,系统问题会首先在Web服务器上得到体现,随着Web服务器错误增加,消耗掉更多的硬件资源,导致硬件资源利用率升高,造成硬件层瓶颈。

在一个优选的实施方式中,若同一时间点只有JVM_CPU出现异常,可判定瓶颈出现在硬件层。瓶颈产生的原因还需要结合调用链路定位到相应的代码进行分析才能确定。例如,当CPU出现瓶颈时,通过查看代码发现此时系统正在执行一个IO密集型任务,CPU长时间处于等待状态,则说明系统真正的瓶颈为IO,需要进行更进一步的分析。若没有代码及应用软件的问题,则说明需要对硬件资源进行重新配置。

在一个优选的实施方式中,若JVM_CPU和GC_COUNT同时出现异常,可判定瓶颈出现在中间件层。很可能是频繁GC导致CPU资源过度消耗,需结合系统出现瓶颈同时刻的相应代码分析是否存在内存泄漏或未及时释放数据库连接等情况。

在另一个优选的实施方式中,若JVM_CPU的异常和TOP_N_SQL相匹配,可判定瓶颈出现在应用程序层。可能是SQL语句写法不当,导致其执行时间过长,从而过多的消耗了CPU资源。

本发明的有益效果:一种面向Web应用的性能瓶颈精准定位系统,分层定位考虑到了各层级性能指标之间的相互影响,通过分层异常检测,可以清楚的知道是哪一层级的性能指标数据出现了异常,增加了瓶颈定位的准确度。定位到瓶颈发生在具体某个层级后,通过与出现瓶颈出现时的调用链路数据进行匹配来定位到系统相应代码,实现性能瓶颈的代码级精准定位。结合瓶颈出现的层级对应用程序进行深入分析确定瓶颈产生的真正原因,优化应用程序,更高效的实现系统性能优化基于性能指标数据,结合Web应用层级架构,根据不同层级性能指标数据之间的相关性,提出了性能瓶颈分层定位策略,可以更加准确的定位到瓶颈发生的位置。基于SkyWalking收集到的性能指标时序数据的异常类型,设计了一种可以检测多种异常类型的组合检测器,可以更加全面的检测出不同类型的异常,提高异常检测的准确度。利用系统监控工具,基于性能指标时序数据和请求调用链路,设计并实现了一个面向Web应用的性能瓶颈精准定位系统,使得性能瓶颈的精准定位对于分析瓶颈产生的原因更加的真实。

21页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种服务器功耗的实时调整方法、装置、电子设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!