性能监测方法及装置与流程

文档序号:14940809发布日期:2018-07-13 20:42阅读:251来源:国知局

本发明涉及性能监测技术领域,特别涉及一种性能监测方法及装置。



背景技术:

众所周知,移动app(application,应用程序)的性能有问题会导致大量用户的流失。而主要的性能问题包括:1.连接超时2.闪退3.卡顿4.崩溃5.黑白屏6.网络劫持7.交互性能差8.cpu(centralprocessingunit,中央处理器)使用率问题9.内存泄露10.不良接口等。

而目前比较普遍的做法是,开发人员在app端手动埋点,以通过埋点采集各项性能数据,然后上报到后端服务器,进行统计并生成各项性能数据报表。

但目前的上述普遍做法存在一定的局限性,具体如下:

首先,需要开发人员在app端手动埋点的方式比较繁琐、不够自动化;而且手动埋点的准确性很难保证。

其次,针对特殊业务的特定性能问题(某些计算密集型的方法执行时间、资源消耗等)手动埋点不能很方便的进行监控。

再次,没有友好的用户交互,一般只会将性能统计数据通过导出excel表格的形式提供给各个用户(开发、产品等),使用不够方便,功能太弱。

最后,没有高效的预警机制。基本上只是对性能数值进行统计并产出报表,但对性能问题不能及时反馈从而不能帮助开发人员在第一时间优化性能问题。



技术实现要素:

本发明提供一种性能监测方法及装置,用以解决背景技术部分的至少部分问题,具体地:当通过在待测试应用中引入的至少一个埋点监测到性能日志时,可对性能日志进行初步判断,当判定性能日志中至少部分日志异常时,可对该异常的部分日志自动进行性能分析,以判断是否达到预设预警条件,若达到预设预警条件,则发出预警提示,从而在测试阶段,就能实时发现app中存在的性能问题,并进行及时反馈,使得开发人员可以及时修复问题,以保证正式发布的app性能良好。

本发明提供一种性能监测方法,包括:

在待测试应用中引入至少一个埋点;

获取所述至少一个埋点监测到的性能日志;

当所述性能日志中至少部分日志异常时,对异常的部分日志进行性能分析,以判断是否达到预设预警条件;

当达到所述预设预警条件时,发出预警提示。

在一个实施例中,在获取所述至少一个埋点监测到的性能日志之后,所述方法还包括:

将所述性能日志中的各项性能指标分别与相应的性能阈值进行比较;

当所述性能日志中部分性能指标分别与相应的性能阈值不匹配时,将所述部分性能指标所属的部分日志确定为所述异常的部分日志。

在一个实施例中,所述方法还包括:

将所述性能日志和所述异常的部分日志分别作为离线日志和实时日志进行保存。

在一个实施例中,所述当所述性能日志中至少部分日志异常时,对异常的部分日志进行性能分析,以判断是否达到预设预警条件,包括:

当所述性能日志中至少部分日志异常时,根据接收到的预设预警规则定期对所述异常的部分日志进行性能分析,以判断是否达到所述预设预警规则对应的预设预警条件。

在一个实施例中,所述在待测试应用中引入至少一个埋点,包括:

根据开发的埋点脚本和与所述埋点脚本相配合的插件自动生成对应于所述至少一个埋点的埋点代码和埋点规则;

在对所述待测试应用进行业务开发时,基于所述埋点规则,使用编译插件对所述埋点代码进行自动编译,以在所述待测试应用中自动引入所述至少一个埋点,其中,所述埋点代码和对应于所述业务开发的业务代码相分离。

本发明还提供一种性能监测装置,包括:

处理模块,用于在待测试应用中引入至少一个埋点;

获取模块,用于获取所述至少一个埋点监测到的性能日志;

判断模块,用于当所述性能日志中至少部分日志异常时,对异常的部分日志进行性能分析,以判断是否达到预设预警条件;

提示模块,用于当达到所述预设预警条件时,发出预警提示。

在一个实施例中,所述装置还包括:

比较模块,用于在获取所述至少一个埋点监测到的性能日志之后,将所述性能日志中的各项性能指标分别与相应的性能阈值进行比较;

确定模块,用于当所述性能日志中部分性能指标分别与相应的性能阈值不匹配时,将所述部分性能指标所属的部分日志确定为所述异常的部分日志。

在一个实施例中,所述装置还包括:

保存模块,用于将所述性能日志和所述异常的部分日志分别作为离线日志和实时日志进行保存。

在一个实施例中,所述判断模块包括:

判断子模块,用于当所述性能日志中至少部分日志异常时,根据接收到的预设预警规则定期对所述异常的部分日志进行性能分析,以判断是否达到所述预设预警规则对应的预设预警条件。

在一个实施例中,所述处理模块包括:

生成子模块,用于根据开发的埋点脚本和与所述埋点脚本相配合的插件自动生成对应于所述至少一个埋点的埋点代码和埋点规则;

编译子模块,用于在对所述待测试应用进行业务开发时,基于所述埋点规则,使用编译插件对所述埋点代码进行自动编译,以在所述待测试应用中自动引入所述至少一个埋点,其中,所述埋点代码和对应于所述业务开发的业务代码相分离。

本公开的实施例提供的技术方案可以包括以下有益效果:

当通过在待测试应用中引入的至少一个埋点监测到性能日志时,可对性能日志进行初步判断,当判定性能日志中至少部分日志异常时,可对该异常的部分日志自动进行性能分析,以判断是否达到预设预警条件,若达到预设预警条件,则发出预警提示,从而在测试阶段,就能实时发现app中存在的性能问题,并进行及时反馈,使得开发人员可以及时修复问题,以保证正式发布的app性能良好。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1是根据一示例性实施例示出的一种性能监测方法的流程图。

图2是根据一示例性实施例示出的另一种性能监测方法的流程图。

图3是根据一示例性实施例示出的一种性能指标的显示截图。

图4是根据一示例性实施例示出的一种性能监测装置的框图。

图5是根据一示例性实施例示出的另一种性能监测装置的框图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

为了解决上述技术问题,本公开实施例提供了一种性能监测方法,该方法适用于性能监测程序、系统或装置中,其执行主体可以是手机、计算机等终端,或者是服务器,如图1所示,该方法包括步骤s101至步骤s104:

在步骤s101中,在待测试应用中引入至少一个埋点;

在步骤s102中,获取至少一个埋点监测到的性能日志;

性能日志中各性能指标的类型可以是crash、卡顿、cpu使用率、内存占用、页面帧率等数据。

在步骤s103中,当性能日志中至少部分日志异常时,对异常的部分日志进行性能分析,以判断是否达到预设预警条件;

在步骤s104中,当达到预设预警条件时,发出预警提示。

当通过在待测试应用中引入的至少一个埋点监测到性能日志时,可对性能日志进行初步判断,当判定性能日志中至少部分日志异常时,可对该异常的部分日志自动进行性能分析,以判断是否达到预设预警条件,若达到预设预警条件,则发出预警提示,从而在测试阶段,就能实时发现app中存在的性能问题,并进行及时反馈,使得开发人员可以及时修复问题,以保证正式发布的app性能良好。

在发出预警提示时,可通过图表、交互良好的管理页面进行提示,如图3所示。

在一个实施例中,在获取至少一个埋点监测到的性能日志之后,方法还包括:

将性能日志中的各项性能指标分别与相应的性能阈值进行比较;

当性能日志中部分性能指标分别与相应的性能阈值不匹配时,将部分性能指标所属的部分日志确定为异常的部分日志。

在获取到至少一个埋点监测到的性能日志之后,可将性能日志中的各项性能指标分别与相应的性能阈值进行自动比较,当性能日志中部分性能指标分别与相应的性能阈值不匹配时,说明该部分性能指标有些异常,与其正常的阈值不匹配,因而,可将部分性能指标所属的部分日志自动确定为异常的部分日志。

在一个实施例中,方法还包括:

将性能日志和异常的部分日志分别作为离线日志和实时日志进行保存。

通过将性能日志和异常的部分日志分别作为离线日志和实时日志进行保存,既可以对所有的性能日志进行数据统计,又可以对实时日志进行实时分析和预警,以便之后能够及时预警,以达到实时分析的目的。

当然,异常的部分日志只是整个性能日志中超过相应性能阈值的一小部分额外存入到搜索引擎中用于进行实时分析,从而保证了实时分析的可行性的日志。

在一个实施例中,当性能日志中至少部分日志异常时,对异常的部分日志进行性能分析,以判断是否达到预设预警条件,包括:

当性能日志中至少部分日志异常时,根据接收到的预设预警规则定期对异常的部分日志进行性能分析,以判断是否达到预设预警规则对应的预设预警条件。

当性能日志中至少部分日志异常时,可根据已接收到的预设预警规则定期地对异常的部分日志(即实时日志)进行性能分析,从而自动判断是否达到预设预警规则对应的预设预警条件,如果达到,则可通过邮件、短信、电话、即时消息等至少一种方式发送提醒,从而及时进行预警,并通过多种方式及时反馈性能问题。

预设预警规则可以是用户通过apm应用性能管理平台的web页面编辑的,并通过提供给用户的接口服务提交的,而通过增加接口服务层,向用户提供了傻瓜式的预警规则编写方案,极大的提高了预警服务的可用性和易用性。

另外,预设预警条件中各项性能指标的阈值相比于异常判断的性能阈值更加苛刻。

如图2所示,在一个实施例中,上述图1所示的步骤s101,即在待测试应用中引入至少一个埋点,可以包括步骤s201和步骤s202:

在步骤s201中,根据开发的埋点脚本和与埋点脚本相配合的插件自动生成对应于至少一个埋点的埋点代码和埋点规则;

由于埋点脚本并不能直接使用,所以,可通过与埋点脚本相配合的插件自动生成上述埋点代码和埋点规则。

而埋点脚本可以是aspectj脚本,与埋点脚本相配合的插件可以是gradle插件,例如:开发的aspectj脚本配合自行开发的gradle插件aspectjscript后可生成对应于埋点所需的代码apmaspects.jar包(该apmaspects.jar包中存储有对应于至少一个埋点的埋点代码和埋点规则)。

埋点规则可以是某部分埋点代码用于监测xx性能指标,既包含了每部分埋点代码的作用又包含了每部分代码需要监测的性能指标的标识,例如,某部分埋点代码是为了监测xx方法执行时间时,就会有一条埋点规则——某部分埋点代码用于监测xx方法执行时间,如此,就可基于该埋点规则,自动添加用于监测xx方法执行时间的埋点代码。

在步骤s202中,在对待测试应用进行业务开发时,基于埋点规则,使用编译插件对埋点代码进行自动编译,以在待测试应用中自动引入至少一个埋点,其中,埋点代码和对应于业务开发的业务代码相分离。

在根据埋点脚本和自行开发的插件自动生成对应于至少一个埋点的埋点代码和埋点规则后,可在对待测试应用进行业务开发时,基于埋点规则,使用编译插件对埋点代码进行自动编译,从而在待测试应用中自动引入至少一个埋点,而由于基于埋点脚本生成了埋点规则,因而,可实现自动生成埋点而无需开发人员的接入,同时利用自行开发的gradle插件,实现了业务开发(即业务代码的研发)和数据采集功能开发(即埋点代码的研发)的完全分离,完全避免了埋点对业务开发的干扰;另外,通过利用埋点规则自动生成埋点,使得埋点的引入扩展性更强,可以通过自定义日志的形式,对特定业务进行埋点,实现特定的统计分析需求;当然,由于自动埋点没有人工干预,所以埋点的准确性更高,且采集性能日志准确性比开发人员手动埋点的方式高。

下面将结合具体的实施例对本发明进行进一步介绍:

本发明的工作流程,主要分成如下三部分:

1、自动埋点采集性能数据

开发人员只需要集成apm(applicationperformancemanagement&monitoring,应用性能管理)sdk(softwaredevelopmentkit,软件开发工具包)并完成简单的初始化,sdk通过自动埋点技术采集大部分性能数据日志(如crash、卡顿、cpu使用率、内存占用、页面帧率等数据),上报到服务器进行处理。另外,也可以手动埋点(业务异常、业务代码执行效率等)采集并上报相关的日志进行分析;

以android手机平台为例,自动埋点方案主要依赖于aspectj技术实现面向方面的编程,以及gradle插件的配合来完成在编译阶段自动生成埋点功能代码。具体方案如下:

1)开发apm(应用性能管理)sdk(软件开发工具包)提供日志上报的功能;

2)开发aspectj脚本配合自行开发的gradle插件aspectjscript后生成对应的自动埋点所需代码apmaspects.jar包;

在app项目开发时,通过引入(手动、自动)apmaspects.jar包,配合自行开发的gradle插件aspectjweave进行编译,完成自动埋点在app中的最终实现。

2、日志分析统计

日志在后端分成两份,一份存入离线日志系统,一份存入实时日志系统(即搜索引擎)。离线日志系统主要针对海量性能日志进行数据统计,而实时日志系统主要进行实时分析和预警;

接口服务接收到性能日志后,会按照相应的阈值判断该日志是否属于异常的情况。对于异常的日志,会将其备份到搜索引擎中,以达到实时分析的目的。

3、预警

预警系统主要利用elastalert预警服务的规则查询功能和elasticsearch搜索引擎的聚合统计功能。具体步骤如下:

1)用户通过apm管理平台的web页面编辑预警规则

2)接口服务将用户提交的预警规则保存为配置文件提交到预警服务

3)elastalert预警服务按照用户提交的规则信息,定时向搜索引擎发起请求,并实时匹配对应的规则。如果满足规则条件,就发送邮件通知用户。

如图4所示,本发明还提供一种性能监测装置,包括:

处理模块401,被配置为在待测试应用中引入至少一个埋点;

获取模块402,被配置为获取至少一个埋点监测到的性能日志;

判断模块403,被配置为当性能日志中至少部分日志异常时,对异常的部分日志进行性能分析,以判断是否达到预设预警条件;

提示模块404,被配置为当达到预设预警条件时,发出预警提示。

在一个实施例中,装置还包括:

比较模块,被配置为在获取至少一个埋点监测到的性能日志之后,将性能日志中的各项性能指标分别与相应的性能阈值进行比较;

确定模块,被配置为当性能日志中部分性能指标分别与相应的性能阈值不匹配时,将部分性能指标所属的部分日志确定为异常的部分日志。

在一个实施例中,装置还包括:

保存模块,被配置为将性能日志和异常的部分日志分别作为离线日志和实时日志进行保存。

在一个实施例中,判断模块包括:

判断子模块,被配置为当性能日志中至少部分日志异常时,根据接收到的预设预警规则定期对异常的部分日志进行性能分析,以判断是否达到预设预警规则对应的预设预警条件。

如图5所示,在一个实施例中,处理模块401可以包括:

生成子模块4011,被配置为根据开发的埋点脚本和与埋点脚本相配合的插件自动生成对应于至少一个埋点的埋点代码和埋点规则;

编译子模块4012,被配置为在对待测试应用进行业务开发时,基于埋点规则,使用编译插件对埋点代码进行自动编译,以在待测试应用中自动引入至少一个埋点,其中,埋点代码和对应于业务开发的业务代码相分离。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

最后,本发明中的性能监测装置适用于终端设备。例如,可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1