一种微服务应用的性能剖析方法、装置及设备制造方法及图纸

技术编号:30162338 阅读:34 留言:0更新日期:2021-09-25 15:16
本说明书实施例提供了一种微服务应用的性能剖析方法、装置及设备,可用于云计算技术领域。所述方法根据性能剖析命令获取所述微服务应用中需要进行性能剖析的每个目标组件运行时的方法堆栈信息;其中,性能剖析命令用于指示所述性能剖析插件收集并上送对应进程的方法堆栈信息;对所有目标组件运行时的方法堆栈信息进行聚合处理,获得所有目标组件的性能分析结果;基于每个目标组件运行时的方法堆栈信息和火焰图生成逻辑,生成每个目标组件对应的火焰图;根据所有目标组件的性能分析结果和每个目标组件对应的火焰图,获得微服务应用的性能剖析结果。利用本说明书实施例可以提升性能问题的排查效率,并为性能优化提供指向。并为性能优化提供指向。并为性能优化提供指向。

【技术实现步骤摘要】
一种微服务应用的性能剖析方法、装置及设备


[0001]本申请涉及云计算
,特别涉及一种微服务应用的性能剖析方法、装置及设备。

技术介绍

[0002]随着微服务架构的持续演进,在企业中,基于微服务架构的应用和服务器的数量不断增加,调用关系也愈加复杂。因此对核心的微服务架构应用进行有效的性能剖析变得比较重要。
[0003]现有技术中主要通过两种方式对微服务架构应用进行性能剖析。第一种是通过事先在业务代码中进行日志埋点,来记录关键业务操作的执行与否和执行耗时,这种方式性能故障的出现点存在很大的不确定因素,预埋日志的位置很可能与性能问题的根因不匹配,从而会需要再次埋设日志并且重新上线系统,降低性能问题的排查效率。第二种是通过字节码增强技术对业务代码进行字节码修改来反映操作的执行耗时情况,这种方式通常需要对一个程序包下所有方法都进行代码注入,不仅会给应用带来性能损耗,而且可能会因为注入点过多导致系统崩溃,从而降低性能问题的排查效率。
[0004]因此,业内亟需一种可以解决上述技术问题的技术方案。

技术实现思路

[0005]本说明书实施例提供了一种微服务应用的性能剖析方法、装置及设备,可以提升性能问题的排查效率,并为性能优化提供指向。
[0006]本说明书提供的一种微服务应用的性能剖析方法、装置及设备是包括以下方式实现的。
[0007]一种微服务应用的性能剖析方法,包括:根据性能剖析命令获取所述微服务应用中需要进行性能剖析的每个目标组件运行时的方法堆栈信息;其中,每个组件的每个进程中设置有性能剖析插件,所述性能剖析命令用于指示所述性能剖析插件收集并上送对应进程的方法堆栈信息;对所有目标组件运行时的方法堆栈信息进行聚合处理,获得所有目标组件的性能分析结果;其中,所述性能分析结果包括所有目标组件中满足预设条件的执行方法的统计结果;基于每个目标组件运行时的方法堆栈信息和火焰图生成逻辑,生成每个目标组件对应的火焰图;其中,所述火焰图包括所述目标组件运行过程中执行方法的信息;根据所有目标组件的性能分析结果和每个目标组件对应的火焰图,获得所述微服务应用的性能剖析结果。
[0008]一种微服务应用的性能剖析装置,包括:获取模块,用于根据性能剖析命令获取所述微服务应用中需要进行性能剖析的每个目标组件运行时的方法堆栈信息;其中,每个组件的每个进程中设置有性能剖析插件,所述性能剖析命令用于指示所述性能剖析插件收集并上送对应进程的方法堆栈信息;聚合模块,用于对所有目标组件运行时的方法堆栈信息进行聚合处理,获得所有目标组件的性能分析结果;其中,所述性能分析结果包括所有目标
组件中满足预设条件的执行方法的统计结果;生成模块,用于基于每个目标组件运行时的方法堆栈信息和火焰图生成逻辑,生成每个目标组件对应的火焰图;其中,所述火焰图包括所述目标组件运行过程中执行方法的信息;获得模块,用于根据所有目标组件的性能分析结果和每个目标组件对应的火焰图,获得所述微服务应用的性能剖析结果。
[0009]一种微服务应用的性能剖析设备,包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现本说明书实施例中任意一个方法实施例的步骤。
[0010]一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现本说明书实施例中任意一个方法实施例的步骤。
[0011]本说明书提供的一种微服务应用的性能剖析方法、装置及设备。一些实施例中采用Java Agent技术,可以在不侵入应用代码的情况下,实时地收集应用运行的方法堆栈信息,并持续进行聚合运算,得出精确到代码行级的性能分析报告,并基于火焰图技术,以可视化的方式生动地展现出应用的性能热点,从而可以显著提升性能问题的排查效率,为应用的性能优化提供有效指向。
附图说明
[0012]此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,并不构成对本说明书的限定。在附图中:
[0013]图1是本说明书提供的一种微服务应用的性能剖析方法的一个实施例的流程示意图;
[0014]图2是本说明书提供的一种性能剖析命令分发器的结构示意图;
[0015]图3是本说明书提供的一种火焰图的简化示意图;
[0016]图4是本说明书提供的一种微服务应用的性能剖析装置的一个实施例的模块结构示意图;
[0017]图5是本说明书提供的一种微服务应用的性能剖析系统的一个实施例的模块结构示意图;
[0018]图6是本说明书提供的一种微服务应用的性能剖析服务器的一个实施例的硬件结构框图。
具体实施方式
[0019]为了使本
的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书中的一部分实施例,而不是全部的实施例。基于本说明书中的一个或多个实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书实施例保护的范围。
[0020]下面以一个具体的应用场景为例对本说明书实施方案进行说明。具体的,图1是本说明书提供的一种微服务应用的性能剖析方法的一个实施例的流程示意图。虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。
[0021]本说明书提供的一种实施方案可以应用到客户端、服务器等中。所述客户端可以包括终端设备,如智能手机、平板电脑等。所述服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式系统的服务器结构等。
[0022]需要说明的是,下述实施例描述并不对基于本说明书的其他可扩展到的应用场景中的技术方案构成限制。具体的一种实施例如图1所示,本说明书提供的一种微服务应用的性能剖析方法的一种实施例中,所述方法可以包括以下步骤。
[0023]S0:根据性能剖析命令获取所述微服务应用中需要进行性能剖析的每个目标组件运行时的方法堆栈信息;其中,每个组件的每个进程中设置有性能剖析插件,所述性能剖析命令用于指示所述性能剖析插件收集并上送对应进程的方法堆栈信息。
[0024]其中,微服务应用采用微服务架构来搭建其核心业务系统。微服务架构就是将传统单体应用以业务类别为边界拆解为多个小型的、可以独立部署的服务进程,进程间通过轻量级的通信协议进行交互。性能剖析命令可以是用户登录用户控制台发布,也可以通过其他方式发布。例如,用户可以登录用户控制台发出性能剖析命令,从而指定对一个微服务应用的若干组件开展性能剖析。性能剖析命令中可以包括微服务应用中需要进行性能剖析的组件标识。这样,根据组件标识可以确定对微服务应用哪些组件开展性能剖析。其中,用户控制台是用户对微服务应用进行性能剖析的主界面,可以发布性能剖析命令,并观察相应组件最频繁执行方法的统计结果和执行过程的火焰图,来定位性能问题的根因,并发现可以本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种微服务应用的性能剖析方法,其特征在于,包括:根据性能剖析命令获取所述微服务应用中需要进行性能剖析的每个目标组件运行时的方法堆栈信息;其中,每个组件的每个进程中设置有性能剖析插件,所述性能剖析命令用于指示所述性能剖析插件收集并上送对应进程的方法堆栈信息;对所有目标组件运行时的方法堆栈信息进行聚合处理,获得所有目标组件的性能分析结果;其中,所述性能分析结果包括所有目标组件中满足预设条件的执行方法的统计结果;基于每个目标组件运行时的方法堆栈信息和火焰图生成逻辑,生成每个目标组件对应的火焰图;其中,所述火焰图包括所述目标组件运行过程中执行方法的信息;根据所有目标组件的性能分析结果和每个目标组件对应的火焰图,获得所述微服务应用的性能剖析结果。2.根据权利要求1所述的方法,其特征在于,所述方法堆栈信息至少包括线程名、线程状态信息和方法列表。3.根据权利要求1所述的方法,其特征在于,所述根据性能剖析命令获取所述微服务应用中需要进行性能剖析的每个目标组件运行时的方法堆栈信息前,包括:接收性能剖析命令;将所述性能剖析命令存储至性能剖析命令分发器;其中,所述性能剖析命令分发器至少包括负载均衡单元、命令读写单元、命令存储数据库;所述负载均衡单元用于将性能剖析插件所发出的访问请求发送至所述命令读写单元;所述命令读写单元用于将性能剖析命令存储到命令数据库中,并读取性能剖析命令返回给性能剖析插件;所述命令存储数据库用于保存性能剖析命令。4.根据权利要求3所述的方法,其特征在于,所述性能剖析插件收集对应进程的方法堆栈信息,包括:获取并解析目标进程对应的性能剖析命令,确定需要过滤的类与方法的黑名单;基于确定的类与方法的黑名单,获取所述目标进程当前所有线程的方法堆栈快照信息;将每个方法堆栈快照信息处理为行信息,获得每个方法堆栈信息。5.根据权利要求4所述的方法,其特征在于,所述性能剖析插件收集对应进程的方法堆栈信息后,还包括:将目标进程的状态信息和每个方法堆栈信息进行组装,获得json形式的方法堆栈信息;将所述json形式的方法堆栈信息存储到内存队列中。6.根据权利要求5所述的方法,其特征在于,所述将所述json形式的方法堆栈信息存储到内存队列中后,还包括:从所述内存队列中取出预设数量的json形式的方法堆栈信息;对预设数量的json形式的方法堆栈信息进行序列化转换,获得序列化的json数据;将所述序列化的json数据批量上送到分布式消息队列。7.根据权利要求6所述的方法,其特征在于,所述将所述序列化的json数据批量上送到分布式消息队列后,还包括:在所述...

【专利技术属性】
技术研发人员:张学舟黄玺磊夏雯君谷俊
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1