System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种调用链监控多线程异步调用的性能剖析方法技术_技高网

一种调用链监控多线程异步调用的性能剖析方法技术

技术编号:40925968 阅读:2 留言:0更新日期:2024-04-18 14:49
本发明专利技术属于新型信息技术领域,公开了一种调用链监控多线程异步调用的性能剖析方法,包括,S01、标记异步调用发生的位置,以及传递带有采样标记的线程;S02、采集带有采样标记的线程的堆栈信息;S03、根据采集到的堆栈信息计算生成异步调用的性能剖析报告;S04、传输异步调用的性能剖析报告;S05、接收并展示异步调用的性能剖析报告。本发明专利技术能够生成多线程异步调用场景下的性能分析报告,提供更加完整和准确的性能剖析功能,解决异步调用场景下难以追踪,性能剖析数据不完整不准确的问题,提升调用链监控系统的准确性,提高用户排查问题的效率。

【技术实现步骤摘要】

本专利技术属于新型信息,具体涉及一种调用链监控多线程异步调用的性能剖析方法


技术介绍

1、随着云计算技术的进步,越来越多的软件系统采用微服务架构,微服务架构是一种软件架构风格:软件系统由多个互相独立的功能单一的微服务组成,微服务之间通过http、rpc调用、消息队列等方式互相通信。微服务架构能够提升开发部署效率,节约部署成本,但它的排障、运维变的更加复杂。通常使用调用链监控技术来监控微服务系统,找出性能瓶颈,定位问题。

2、调用链监控是一种用于跟踪调用过程的技术,它可以记录程序执行路径,追踪某次外部请求在服务之间和服务内部的调用过程;调用链监控系统会在每个微服务上部署采集器,采集器通过代码埋点、字节码增强等技术读取当前服务上的调用过程,对调用过程进行标记,然后将采集到的数据上报到后台,并通过控制台进行可视化展示和监控告警。

3、异步调用是软件架构中的一种常见设计,它可以避免当前请求进程被长期占用,能够提高服务的整体响应速度和吞吐量;但是也使得调用过程变的复杂,难以追踪;多线程异步调用的情况下的性能分析是调用链监控系统的一个难题。

4、已有的调用链监控系统主要关注服务间的调用关系,对服务内的方法级调用关注较少,部分调用链产品会提供性能剖析工具,但是这些性能剖析工具也只关注请求线程本身的方法堆栈,缺少多线程异步调用场景下的性能剖析能力。然而多线程异步调用在实际生产环境中普遍存在,只关注当前请求线程,会导致对服务的异步调用的性能剖析报告不完整,不准确。


技术实现思路b>

1、本专利技术的目的在于提供一种调用链监控多线程异步调用的性能剖析方法,用于解决现
技术介绍
中提出的技术问题。

2、为了实现上述目的,本专利技术采用了如下技术方案:一种调用链监控多线程异步调用的性能剖析方法,包括如下步骤:s01、标记异步调用发生的位置,以及传递带有采样标记的线程;s02、采集带有采样标记的线程的堆栈信息;s03、根据采集到的堆栈信息计算生成异步调用的性能剖析报告;s04、传输异步调用的性能剖析报告;s05、接收并展示异步调用的性能剖析报告。

3、进一步的,标记异步调用发生的位置的方法如下:启动采集器,扫描应用程序内的字节码;在创建线程、异步调用的方法前后生成对应的代理类,记录发生异步调用的位置的方法签名。

4、进一步的,传递带有采样标记的线程的方法如下:根据给定的规则生成采样标记,并与线程关联;在异步调用发生后,为被调用的线程生成采样标记;在程序运行时,使用字节码增强技术传递堆栈采样标记;在异步调用结束后清除当前线程的堆栈采样标记。

5、进一步的,根据给定的规则生成采样标记,并与线程关联的步骤如下:根据给定的规则判断是否需要生成采样标记,如果需要,则生成唯一的标记;将生成的标记与线程关联,确保每个线程都有自己的采样标记;在异步调用时将采样标记传递给被调用方,被调用方使用相同的方式将传入的采样标记与线程关联;在上报时将采样标记一并上报,并使用日志系统将采样标记写入到日志中。

6、进一步的,使用字节码增强技术传递堆栈采样标记的步骤如下:首先,需要确定哪些方法需要进行字节码增强,以实现采样标记的传递;然后,通过使用字节码增强框架,编写代码来修改类的字节码,并在方法的代码执行前后,插入相应的代码逻辑,用于传递采样标记;最后,在方法的代码执行前后,插入相关代码逻辑来获取当前线程的采样标记,并将其传递给下一个方法。

7、进一步的,采集带有采样标记的线程的堆栈信息的方法如下:定期扫描当前进程的所有线程,读取每条线程的采样标记;如果采样标记存在,则生成这条线程的堆栈信息;如果当前线程是请求线程本身,则记录线程的所有堆栈信息;如果这条线程是被调用的异步线程,则只记录调用位置以后的堆栈信息。

8、进一步的,异步调用的性能剖析报告包括调用堆栈的所有层级中的所有方法、同一层级下多个方法的调用顺序,以及每个方法的采集次数、调用次数、平均总耗时、平均自身耗时。

9、进一步的,最底部的方法总耗时、最底部方法的自身耗时,以及第i层方法总耗时的计算公式分别为:

10、

11、

12、

13、进一步的,传输异步调用的性能剖析报告的方式包括如下几种:使用http请求发送数据进行传输、使用消息队列进行传输、使用远程调用框架进行传输、将异步调用的性能剖析报告存储在云端,并通过api来访问和下载,以及使用日志聚合服务传输。

14、进一步的,接收并展示异步调用的性能剖析报告的方法如下:接收采集器上报的异步调用的性能剖析报告数据,并将接收到的数据进行解析,提取异步调用的性能剖析报告信息;选择使用数据库来存储异步调用的性能剖析报告;使用前端框架来构建数据展示页面,获取异步调用的性能剖析报告数据,并在页面上进行展示;展示方式为文本、表格、火焰图中的任一种。

15、综上所述,由于采用了上述技术方案,本专利技术的有益效果是:

16、本专利技术能够生成多线程异步调用场景下的性能分析报告,提供更加完整和准确的性能剖析功能,解决异步调用场景下难以追踪,性能剖析数据不完整不准确的问题,提升调用链监控系统的准确性,提高用户排查问题的效率。

本文档来自技高网...

【技术保护点】

1.一种调用链监控多线程异步调用的性能剖析方法,其特征在于,包括如下步骤:

2.如权利要求1所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,标记异步调用发生的位置的方法如下:

3.如权利要求1或2所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,传递带有采样标记的线程的方法如下:

4.如权利要求3所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,根据给定的规则生成采样标记,并与线程关联的步骤如下:

5.如权利要求4所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,使用字节码增强技术传递堆栈采样标记的步骤如下:

6.如权利要求5所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,采集带有采样标记的线程的堆栈信息的方法如下:

7.如权利要求6所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,异步调用的性能剖析报告包括调用堆栈的所有层级中的所有方法与同一层级下多个方法的调用顺序,以及每个方法的采集次数、调用次数、平均总耗时与平均自身耗时。>

8.如权利要求7所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,最底部的方法总耗时与最底部方法的自身耗时,以及第i层方法总耗时的计算公式分别为:

9.如权利要求8所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,传输异步调用的性能剖析报告的方式包括如下几种:

10.如权利要求1或8所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,接收并展示异步调用的性能剖析报告的方法如下:

...

【技术特征摘要】

1.一种调用链监控多线程异步调用的性能剖析方法,其特征在于,包括如下步骤:

2.如权利要求1所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,标记异步调用发生的位置的方法如下:

3.如权利要求1或2所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,传递带有采样标记的线程的方法如下:

4.如权利要求3所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,根据给定的规则生成采样标记,并与线程关联的步骤如下:

5.如权利要求4所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,使用字节码增强技术传递堆栈采样标记的步骤如下:

6.如权利要求5所述的一种调用链监控多线程异步调用的性能剖析方法,其特征在于,采集带有采样标记...

【专利技术属性】
技术研发人员:唐伟程
申请(专利权)人:天翼云科技有限公司
类型:发明
国别省市:

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

1