一种基于Arthas的异常定位方法及系统技术方案

技术编号:33289202 阅读:11 留言:0更新日期:2022-05-01 00:04
本发明专利技术公开了一种基于Arthas的异常定位方法及系统,所述方法包括:通过基于第一目标,获得第一目标类;获得第一实例;获得第一目标方法;获得第一方法调用链,其中,所述第一方法调用链包括第一调用方法、第二调用方法;基于本地环境加载所述第一目标类,获得所述第一方法调用链中各调用方法的本地执行耗时;利用instrument技术,开发获得第一Agent程序;获得所述第一方法调用链中各调用方法的执行耗时;基于预设时间差阈值筛选获得第一异常方法集合。解决了现有技术中通过硬编码、动态代理技术或JVMTI定位具体异常方法,均存在操作繁琐复杂、耗时长,或开发新类成本高、占用存储空间多,或难度高的技术问题。或难度高的技术问题。或难度高的技术问题。

【技术实现步骤摘要】
一种基于Arthas的异常定位方法及系统


[0001]本专利技术涉及计算机
,尤其涉及一种基于Arthas的异常定位方法及系统。

技术介绍

[0002]实际计算机应用过程中,常常有涉及到多个外呼场景的交易,当某支涉及到多个外呼场景的交易在生产环境执行时,一直以来响应时间都在正常范围之内,但是突然某天响应时间变长,吞吐量降低,客户抱怨不断,公司业务受损时,首先通过命令对服务器的CPU、内存、磁盘资源等进行查看,发现并无异常。进一步的,在本地环境中,对该多个外呼场景的交易进行测试,测试结果证明本地响应时间正常、吞吐量也正常。因此,此时需要利用计算机技术分别得到调用链条上各个相关方法的耗时,并定位耗时较多的方法,进行下一步的分析。现有技术中多个外呼场景的交易突然异常,通过硬编码定位具体异常方法时操作繁琐复杂、耗时长,而利用动态代理技术定位具体异常方法,存在开发新类成本高、占用存储空间多的问题,此外通过JVMTI定位具体异常方法,存在编程难度高的技术问题。研究利用计算机技术提高异常方法的定位速度和精度,对提高系统维护速率、保障用户使用等具有重要意义。
[0003]然而,现有技术中通过硬编码、动态代理技术或JVMTI定位具体异常方法,均存在操作繁琐复杂、耗时长,或开发新类成本高、占用存储空间多,或难度高的技术问题。

技术实现思路

[0004]本专利技术的目的是提供一种基于Arthas的异常定位方法及系统,用以解决现有技术中通过硬编码、动态代理技术或JVMTI定位具体异常方法,均存在操作繁琐复杂、耗时长,或开发新类成本高、占用存储空间多,或难度高的技术问题。
[0005]鉴于上述问题,本专利技术提供了一种基于Arthas的异常定位方法及系统。
[0006]第一方面,本专利技术提供了一种基于Arthas的异常定位方法,所述方法通过一种基于Arthas的异常定位系统实现,其中,所述方法包括:通过基于第一目标jvm,获得第一目标类;将所述第一目标类进行实例化处理,获得第一实例Class File Trans former;基于所述第一实例Class File Trans former,获得第一目标方法,其中,所述第一目标方法与所述第一目标类对应;基于所述第一目标方法,获得第一方法调用链,其中,所述第一方法调用链包括第一调用方法、第二调用方法;基于本地环境加载所述第一目标类,获得所述第一方法调用链中各调用方法的本地执行耗时,分别记作第一本地执行耗时、第二本地执行耗时;利用instrument技术,开发获得第一Agent程序;基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,分别记作第一执行耗时、第二执行耗时;对比所述第一本地执行耗时和所述第一执行耗时、所述第二本地执行耗时和所述第二执行耗时,基于预设时间差阈值筛选获得第一异常方法集合。
[0007]另一方面,本专利技术还提供了一种基于Arthas的异常定位系统,用于执行如第一方面所述的一种基于Arthas的异常定位方法,其中,所述系统包括:第一获得单元:所述第一
获得单元用于基于第一目标jvm,获得第一目标类;第二获得单元:所述第二获得单元用于将所述第一目标类进行实例化处理,获得第一实例Class File Trans former;第三获得单元:所述第三获得单元用于基于所述第一实例Class File Trans former,获得第一目标方法,其中,所述第一目标方法与所述第一目标类对应;第四获得单元:所述第四获得单元用于基于所述第一目标方法,获得第一方法调用链,其中,所述第一方法调用链包括第一调用方法、第二调用方法;第五获得单元:所述第五获得单元用于基于本地环境加载所述第一目标类,获得所述第一方法调用链中各调用方法的本地执行耗时,分别记作第一本地执行耗时、第二本地执行耗时;第六获得单元:所述第六获得单元用于利用instrument技术,开发获得第一Agent程序;第七获得单元:所述第七获得单元用于基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,分别记作第一执行耗时、第二执行耗时;第八获得单元:所述第八获得单元用于对比所述第一本地执行耗时和所述第一执行耗时、所述第二本地执行耗时和所述第二执行耗时,基于预设时间差阈值筛选获得第一异常方法集合。
[0008]第三方面,本专利技术还提供了一种基于Arthas的异常定位系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现上述第一方面所述方法的步骤。
[0009]第四方面,一种电子设备,其中,包括处理器和存储器;
[0010]该存储器,用于存储;
[0011]该处理器,用于通过调用,执行上述第一方面中任一项所述的方法。
[0012]第五方面,一种计算机程序产品,包括计算机程序和/或指令,该计算机程序和/或指令被处理器执行时实现上述第一方面中任一项所述方法的步骤。
[0013]本专利技术中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0014]1.通过基于第一目标jvm,加载第一目标类,进一步将第一目标类实例化得到第一实例,对应得到第一目标方法和第一方法调用链。然后在本地环境中运行第一方法调用链,从而统计得到第一方法调用链中各方法在本地执行时的耗时数据。进一步的,利用instrument技术开发第一Agent程序,在加载第一目标类时调用所述第一Agent程序,从而计算得到第一方法调用链中各方法在生产环境下执行时的实际耗时数据。最后对比第一方法调用链中各方法的本地耗时数据和实际耗时数据,筛选得到耗时异常的方法,以备进一步分析。通过调用instrument技术开发的Agent程序,实现了快速定位异常方法的技术目标,在不修改业务代码的前提下简单、快速定位异常方法,达到了提高异常方法的定位效率和精度,同时降低异常方法定位的成本和难度的技术效果。
[0015]2.通过instrument技术,达到了对第一目标jvm中正在运行的java程序的字节码进行动态修改、重新加载、重新实例化的技术效果。
[0016]3.通过premain方法实现了基于第一目标jvm加载而同时加载第一Agent程序,通过agentmain方法实现了基于第一目标jvm后,再次加载第一Agent程序,最终均达到了对第一Agent程序调用的技术效果。
[0017]上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。
附图说明
[0018]为了更清楚地说明本专利技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0019]图1为本专利技术一种基于Arthas的异常定位方法的流程本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Arthas的异常定位方法,其特征在于,所述方法应用于一种基于Arthas的异常定位系统,所述方法包括:基于第一目标jvm,获得第一目标类;将所述第一目标类进行实例化处理,获得第一实例Class File Trans former;基于所述第一实例Class File Trans former,获得第一目标方法,其中,所述第一目标方法与所述第一目标类对应;基于所述第一目标方法,获得第一方法调用链,其中,所述第一方法调用链包括第一调用方法、第二调用方法;基于本地环境加载所述第一目标类,获得所述第一方法调用链中各调用方法的本地执行耗时,分别记作第一本地执行耗时、第二本地执行耗时;利用instrument技术,开发获得第一Agent程序;基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,分别记作第一执行耗时、第二执行耗时;对比所述第一本地执行耗时和所述第一执行耗时、所述第二本地执行耗时和所述第二执行耗时,基于预设时间差阈值筛选获得第一异常方法集合。2.如权利要求1所述的方法,其特征在于,所述利用instrument技术,开发获得第一Agent程序,包括:基于所述第一目标类,获得第一目标类的第一字节码,并将所述第一字节码存储到第一代码区;基于instrument技术,获得第一被监控类retransform Classes和第一添加转换类add Trans former;将所述第一字节码记作所述第一被监控类retransform Classes;当所述第一目标类在加载执行时,所述第一添加转换类add Trans former对所述第一字节码进行修改,获得第二字节码,并将所述第二字节码存储到所述第一代码区。3.如权利要求1所述的方法,其特征在于,所述基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,之前还包括:基于所述第一Agent程序,编译获得第一动态链接库;将所述第一动态链接库加载至所述第一目标jvm;基于所述第一目标jvm加载所述第一目标类时,同时加载所述第一动态链接库,即在加载所述第一目标类时,同时通过premain方法加载所述第一Agent程序。4.如权利要求1所述的方法,其特征在于,所述基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,之前还包括:获得所述第一目标jvm的第一进程号;获得第二目标jvm,并基于所述第一进程号,将所述第二目标jvm通过Virtual Machine的attach方法连接至所述第一目标jvm;基于所述第一目标jvm加载所述第一目标类时,同时加载连接的所述第二目标jvm,即在加载所述第一目标类时,同时通过agentmain方法加载所述第一Agent程序。5.如权利要求1所述的方法,其特征在于,所述基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,还包括:
基于所述第一Agent程序,获得所述第一目标jvm的第一运行信息...

【专利技术属性】
技术研发人员:封侣
申请(专利权)人:建信金融科技有限责任公司
类型:发明
国别省市:

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

1