一种耗时的确定方法和装置制造方法及图纸

技术编号:26650419 阅读:20 留言:0更新日期:2020-12-09 00:45
本发明专利技术提供一种基于采集的调用链路进行调用耗时的确定方法和装置,该方法包括:在客户端的主线程在预定任务时,利用与所述主线程异步的监控线程按照预定时间间隔采集所述主线程的方法调用,并获得所述主线程进行方法调用的调用链路;在所述主线程执行完所述预定任务后,聚合多个按所述预定时间间隔采集的所述调用链路,得到聚合结果;基于所述聚合结果,统计所述调用链路中各调用方法的调用耗时。

【技术实现步骤摘要】
一种耗时的确定方法和装置
本专利技术涉及信息
,尤其涉及一种调耗时的确定方法和装置。
技术介绍
客户端在运行时,若需要对运用的方法(method)调用进行追踪分析。在客户端的源代码中设置了多个可被调用的调用方法,一个所述调用方法可能对应了客户端需要实现的一个功能。通过追踪分析可以知道该方法的调用情况。相关技术中进行方法调用追踪分析通常具有如下方法:在客户端中手动埋点的方案:该方案需要对所有方法加入埋点,对包大小和性能影响都很大,而且无法覆盖系统级别的方法,无法全面监控。通过hook(挂钩)方式在客户端的源代码中插入异常处理代码进行方法调用的追踪分析:该方案会改动原始方法所对应的源代码,由于相当于执行方法中引入了其他代码,对性能有一定影响,若引入的异常处理代码出现问题还会引发崩溃问题。。如何尽可能的减少对客户端原有的逻辑执行情况下,能够全面监控客户端的方法调用状况,是现有技术仍需进一步解决的问题。
技术实现思路
本专利技术的一个目的是提供一种耗时的确定方法和装置,以解决现有客户端的方法调用监控不全面或会干扰原有执行逻辑的问题。根据本专利技术的第一方面,一种耗时确定方法,包括:通过与主线程异步的监控线程,按照预定时间间隔获取所述主线程进行函数调用的调用链路;对相邻时间间隔获取的相同的调用链路,进行聚合处理;确定聚合处理后的各调用链路中各函数调用所需的调用耗时。根据本专利技术的第二方面,一种基于采集的调用链路进行调用耗时的确定方法,包括:利用与主线程异步的监控线程按照预定时间间隔获取所述主线程的方法调用及所述主线程进行所述方法调用的调用链路;在所述主线程执行完所述方法调用后,聚合相邻所述预定时间间隔获取的相同所述调用链路,得到聚合结果;基于所述聚合结果,统计所述调用链路中各调用方法的调用耗时;基于所述调用耗时输出调用状况信息。基于上述方案,所述利用与主线程异步的监控线程按照预定时间间隔获取所述主线程调用的方法进行采集,获得所述主线程的调用链路,包括:利用所述监控线程按照预定时间间隔采集主线程的堆栈,获得所述主线程的调用链路,其中,所述堆栈内包含所述主线程的调用方法的调用信息。基于上述方案,所述基于所述聚合结果,统计所述调用链路中各调用方法的调用耗时,包括:将一个所述调用方法所对应所述预定时间间隔累加,获得所述调用耗时。基于上述方案,所述基于所述调用耗时输出调用状况信息,还包括:基于所述聚合结果和所述调用耗时,生成以调用方法和调用耗时为节点的树状结构;遍历所述树状结构,获得所述主线程执行所述预定任务的耗时产生预定影响的调用状况信息;将所述调用状况信息返回给服务端。基于上述方案,所述调用状况信息包括以下至少之一:调用链路所包含调用方法的方法数字地址;调用方法的方法数字地址。基于上述方案,所述方法数字地址用于服务端符号化后进行问题分析和定位。基于上述方案,所述遍历所述树状结构,获得所述主线程执行所述预定任务的耗时产生预定影响的调用状况信息,包括:遍历所述树状结构,获得所述主线程执行预定任务的调用耗时最大的调用链路和/或调用方法。根据本专利技术的第三方面,一种耗时确定装置,其特征在于,包括:第一获取模块,用于通过与主线程异步的监控线程,按照预定时间间隔获取所述主线程进行函数调用的调用链路;第一聚合模块,用于对相邻时间间隔获取的相同的调用链路,进行聚合处理;确定模块,用于确定聚合处理后的各调用链路中各函数调用所需的调用耗时。根据本专利技术的第四方面,一种基于采集的调用链路进行调用耗时的确定装置,其特征在于,包括:第二获取模块,用于利用与主线程异步的监控线程按照预定时间间隔获取所述主线程的方法调用及所述主线程进行所述方法调用的调用链路;第二聚合模块,用于在所述主线程执行完所述方法调用后,聚合相邻所述预定时间间隔获取的相同所述调用链路,得到聚合结果;统计模块,用于基于所述聚合结果,统计所述调用链路中各调用方法的调用耗时;输出模块,用于基于所述调用耗时输出调用状况信息。基于上述方案,所述第二获取模块,具体用于利用所述监控线程按照预定时间间隔采集主线程的堆栈,获得所述主线程的调用链路,其中,所述堆栈内包含所述主线程的调用方法的调用信息。基于上述方案,所述统计模块,具体用于将一个所述调用方法所对应所述预定时间间隔累加,获得所述调用耗时。基于上述方案,所述输出模块,具体用于基于所述聚合结果和所述调用耗时,生成以调用方法和调用耗时为节点的树状结构;遍历所述树状结构,获得所述主线程执行所述预定任务的耗时产生预定影响的调用状况信息;将所述调用状况信息返回给服务端。基于上述方案,所述调用状况信息包括以下至少之一:调用链路所包含调用方法的方法数字地址;调用方法的方法数字地址。基于上述方案,所述方法数字地址用于服务端符号化后进行问题分析和定位。基于上述方案,所述输出模块,具体用于遍历所述树状结构,获得所述主线程执行预定任务的调用耗时最大的调用链路和/或调用方法。根据本专利技术的第五方面,提供一种存储介质,所述存储介质存储计算机程序指令,所述计算机程序指令根据本专利技术所述的方法进行执行。根据本专利技术的第六方面,提供一种计算设备,包括:用于存储计算机程序指令的存储器和用于执行计算机程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发所述计算设备执行本专利技术所述的方法。根据本专利技术的第七方面,提供一种耗时确定方法和装置,该方法包括:确定待监控的函数;通过与主线程异步的监控线路,获取函数的调用链路;基于获取的函数的调用链路,确定函数调用耗时。该装置包括:监测模块,用于确定待监控的函数;第一获取模块,用于通过与主线程异步的监控线路,获取函数的调用链路;确定模块,用于基于获取的函数的调用链路,确定函数调用耗时。本专利技术提供的技术方案,利用与客户端的主线程异步的监控线程采集主线程在执行预定任务时的调用方法或称之为调用函数,然后在主线程的预定任务执行结束之后,聚合相邻预定时间间隔采集的调用方法,再基于聚合的结果及各调用方法被采集的相邻预定时间间隔的数目,就能够得到主线程执行预定任务时的调用方法所产生的调用耗时;如此,一方面,可以由不干扰客户端既有的逻辑执行的异步的监控线程监控主线程所调用的方法及其对应的调用链路,从而减少了对主线程执行预定任务调用方法的监控缺失现象;另一方面,与主线程异步的所述监控线程主动统计出执行所述预定任务被调用的方法所产生的调用耗时,从而实现了调用链路和调用耗时的监控,从而在执行任务超时时,可以结合调用耗时定位出导致任务执行超时的问题调用链路和/或调用方法。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发本文档来自技高网...

【技术保护点】
1.一种耗时确定方法,其特征在于,包括:/n通过与主线程异步的监控线程,按照预定时间间隔获取所述主线程进行函数调用的调用链路;/n对相邻时间间隔获取的相同的调用链路,进行聚合处理;/n确定聚合处理后的各调用链路中各函数调用所需的调用耗时。/n

【技术特征摘要】
1.一种耗时确定方法,其特征在于,包括:
通过与主线程异步的监控线程,按照预定时间间隔获取所述主线程进行函数调用的调用链路;
对相邻时间间隔获取的相同的调用链路,进行聚合处理;
确定聚合处理后的各调用链路中各函数调用所需的调用耗时。


2.一种基于采集的调用链路进行调用耗时的确定方法,其特征在于,包括:
利用与主线程异步的监控线程按照预定时间间隔获取所述主线程的方法调用及所述主线程进行所述方法调用的调用链路;
在所述主线程执行完所述方法调用后,聚合相邻所述预定时间间隔获取的相同所述调用链路,得到聚合结果;
基于所述聚合结果,统计所述调用链路中各调用方法的调用耗时;
基于所述调用耗时输出调用状况信息。


3.根据权利要求2所述的方法,其特征在于,所述利用与主线程异步的监控线程按照预定时间间隔获取所述主线程调用的方法进行采集,获得所述主线程的调用链路,包括:
利用所述监控线程按照预定时间间隔采集主线程的堆栈,获得所述主线程的调用链路,其中,所述堆栈内包含所述主线程的调用方法的调用信息。


4.根据权利要求2或3所述的方法,其特征在于,所述基于所述聚合结果,统计所述调用链路中各调用方法的调用耗时,包括:
将一个所述调用方法所对应所述预定时间间隔累加,获得所述调用耗时。


5.根据权利要求2或3所述的方法,其特征在于,所述基于所述调用耗时输出调用状况信息,还包括:
基于所述聚合结果和所述调用耗时,生成以调用方法和调用耗时为节点的树状结构;
遍历所述树状结构,获得所述主线程执行所述预定任务的耗时产生预定影响的调用状况信息;
将所述调用状况信息返回给服务端。


6.根据权利要求5所述的方法,其特征在于,所述调用状况信息包括以下至少之一:
调用链路所包含调用方法的方法数字地址;
调用方法的方法数字地址。


7.根据权利要求6所述的方法,其特征在于,所述方法数字地址用于服务端符号化后进行问题分析和定位。


8.根据权利要求5所述的方法,其特征在于,所述遍历所述树状结构,获得所述主线程执行所述预定任务的耗时产生预定影响的调用状况信息,包括:
遍历所述树状结构,获得所述主线程执行预定任务的调用耗时最大的调用链路和/或调用方法。


9.一种耗时确定方法,其特征在于,包括:
确定待监控的函数;
通过与主线程异步的监控线路,获取函数的调用链路;
基于获取的函数的调用链路,确定函数调用耗时。


10.一种耗时确定装置,其特征在于,包括:
第一获取模块,用于通过与主线程异步的监控线程,按照预定时间间隔获取所述主线程进行函数...

【专利技术属性】
技术研发人员:彭玉堂刘韩松尹峥伟
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1