【技术实现步骤摘要】
一种微服务应用的性能剖析方法、装置及设备
[0001]本申请涉及云计算
,特别涉及一种微服务应用的性能剖析方法、装置及设备。
技术介绍
[0002]随着微服务架构的持续演进,在企业中,基于微服务架构的应用和服务器的数量不断增加,调用关系也愈加复杂。因此对核心的微服务架构应用进行有效的性能剖析变得比较重要。
[0003]现有技术中主要通过两种方式对微服务架构应用进行性能剖析。第一种是通过事先在业务代码中进行日志埋点,来记录关键业务操作的执行与否和执行耗时,这种方式性能故障的出现点存在很大的不确定因素,预埋日志的位置很可能与性能问题的根因不匹配,从而会需要再次埋设日志并且重新上线系统,降低性能问题的排查效率。第二种是通过字节码增强技术对业务代码进行字节码修改来反映操作的执行耗时情况,这种方式通常需要对一个程序包下所有方法都进行代码注入,不仅会给应用带来性能损耗,而且可能会因为注入点过多导致系统崩溃,从而降低性能问题的排查效率。
[0004]因此,业内亟需一种可以解决上述技术问题的技术方案。
专利技术 ...
【技术保护点】
【技术特征摘要】
1.一种微服务应用的性能剖析方法,其特征在于,包括:根据性能剖析命令获取所述微服务应用中需要进行性能剖析的每个目标组件运行时的方法堆栈信息;其中,每个组件的每个进程中设置有性能剖析插件,所述性能剖析命令用于指示所述性能剖析插件收集并上送对应进程的方法堆栈信息;对所有目标组件运行时的方法堆栈信息进行聚合处理,获得所有目标组件的性能分析结果;其中,所述性能分析结果包括所有目标组件中满足预设条件的执行方法的统计结果;基于每个目标组件运行时的方法堆栈信息和火焰图生成逻辑,生成每个目标组件对应的火焰图;其中,所述火焰图包括所述目标组件运行过程中执行方法的信息;根据所有目标组件的性能分析结果和每个目标组件对应的火焰图,获得所述微服务应用的性能剖析结果。2.根据权利要求1所述的方法,其特征在于,所述方法堆栈信息至少包括线程名、线程状态信息和方法列表。3.根据权利要求1所述的方法,其特征在于,所述根据性能剖析命令获取所述微服务应用中需要进行性能剖析的每个目标组件运行时的方法堆栈信息前,包括:接收性能剖析命令;将所述性能剖析命令存储至性能剖析命令分发器;其中,所述性能剖析命令分发器至少包括负载均衡单元、命令读写单元、命令存储数据库;所述负载均衡单元用于将性能剖析插件所发出的访问请求发送至所述命令读写单元;所述命令读写单元用于将性能剖析命令存储到命令数据库中,并读取性能剖析命令返回给性能剖析插件;所述命令存储数据库用于保存性能剖析命令。4.根据权利要求3所述的方法,其特征在于,所述性能剖析插件收集对应进程的方法堆栈信息,包括:获取并解析目标进程对应的性能剖析命令,确定需要过滤的类与方法的黑名单;基于确定的类与方法的黑名单,获取所述目标进程当前所有线程的方法堆栈快照信息;将每个方法堆栈快照信息处理为行信息,获得每个方法堆栈信息。5.根据权利要求4所述的方法,其特征在于,所述性能剖析插件收集对应进程的方法堆栈信息后,还包括:将目标进程的状态信息和每个方法堆栈信息进行组装,获得json形式的方法堆栈信息;将所述json形式的方法堆栈信息存储到内存队列中。6.根据权利要求5所述的方法,其特征在于,所述将所述json形式的方法堆栈信息存储到内存队列中后,还包括:从所述内存队列中取出预设数量的json形式的方法堆栈信息;对预设数量的json形式的方法堆栈信息进行序列化转换,获得序列化的json数据;将所述序列化的json数据批量上送到分布式消息队列。7.根据权利要求6所述的方法,其特征在于,所述将所述序列化的json数据批量上送到分布式消息队列后,还包括:在所述...
【专利技术属性】
技术研发人员:张学舟,黄玺磊,夏雯君,谷俊,
申请(专利权)人:中国工商银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。