CN114416412A - 一种基于Arthas的异常定位方法及系统 - Google Patents

一种基于Arthas的异常定位方法及系统 Download PDF

Info

Publication number
CN114416412A
CN114416412A CN202210043763.9A CN202210043763A CN114416412A CN 114416412 A CN114416412 A CN 114416412A CN 202210043763 A CN202210043763 A CN 202210043763A CN 114416412 A CN114416412 A CN 114416412A
Authority
CN
China
Prior art keywords
execution time
obtaining
target
calling
time consumption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210043763.9A
Other languages
English (en)
Other versions
CN114416412B (zh
Inventor
封侣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CCB Finetech Co Ltd
Original Assignee
CCB Finetech Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CCB Finetech Co Ltd filed Critical CCB Finetech Co Ltd
Priority to CN202210043763.9A priority Critical patent/CN114416412B/zh
Publication of CN114416412A publication Critical patent/CN114416412A/zh
Application granted granted Critical
Publication of CN114416412B publication Critical patent/CN114416412B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

一种基于Arthas的异常定位方法及系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于Arthas的异常定位方法及系统。
背景技术
实际计算机应用过程中,常常有涉及到多个外呼场景的交易,当某支涉及到多个外呼场景的交易在生产环境执行时,一直以来响应时间都在正常范围之内,但是突然某天响应时间变长,吞吐量降低,客户抱怨不断,公司业务受损时,首先通过命令对服务器的CPU、内存、磁盘资源等进行查看,发现并无异常。进一步的,在本地环境中,对该多个外呼场景的交易进行测试,测试结果证明本地响应时间正常、吞吐量也正常。因此,此时需要利用计算机技术分别得到调用链条上各个相关方法的耗时,并定位耗时较多的方法,进行下一步的分析。现有技术中多个外呼场景的交易突然异常,通过硬编码定位具体异常方法时操作繁琐复杂、耗时长,而利用动态代理技术定位具体异常方法,存在开发新类成本高、占用存储空间多的问题,此外通过JVMTI定位具体异常方法,存在编程难度高的技术问题。研究利用计算机技术提高异常方法的定位速度和精度,对提高系统维护速率、保障用户使用等具有重要意义。
然而,现有技术中通过硬编码、动态代理技术或JVMTI定位具体异常方法,均存在操作繁琐复杂、耗时长,或开发新类成本高、占用存储空间多,或难度高的技术问题。
发明内容
本发明的目的是提供一种基于Arthas的异常定位方法及系统,用以解决现有技术中通过硬编码、动态代理技术或JVMTI定位具体异常方法,均存在操作繁琐复杂、耗时长,或开发新类成本高、占用存储空间多,或难度高的技术问题。
鉴于上述问题,本发明提供了一种基于Arthas的异常定位方法及系统。
第一方面,本发明提供了一种基于Arthas的异常定位方法,所述方法通过一种基于Arthas的异常定位系统实现,其中,所述方法包括:通过基于第一目标jvm,获得第一目标类;将所述第一目标类进行实例化处理,获得第一实例Class File Trans former;基于所述第一实例Class File Trans former,获得第一目标方法,其中,所述第一目标方法与所述第一目标类对应;基于所述第一目标方法,获得第一方法调用链,其中,所述第一方法调用链包括第一调用方法、第二调用方法;基于本地环境加载所述第一目标类,获得所述第一方法调用链中各调用方法的本地执行耗时,分别记作第一本地执行耗时、第二本地执行耗时;利用instrument技术,开发获得第一Agent程序;基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,分别记作第一执行耗时、第二执行耗时;对比所述第一本地执行耗时和所述第一执行耗时、所述第二本地执行耗时和所述第二执行耗时,基于预设时间差阈值筛选获得第一异常方法集合。
另一方面,本发明还提供了一种基于Arthas的异常定位系统,用于执行如第一方面所述的一种基于Arthas的异常定位方法,其中,所述系统包括:第一获得单元:所述第一获得单元用于基于第一目标jvm,获得第一目标类;第二获得单元:所述第二获得单元用于将所述第一目标类进行实例化处理,获得第一实例Class File Trans former;第三获得单元:所述第三获得单元用于基于所述第一实例Class File Trans former,获得第一目标方法,其中,所述第一目标方法与所述第一目标类对应;第四获得单元:所述第四获得单元用于基于所述第一目标方法,获得第一方法调用链,其中,所述第一方法调用链包括第一调用方法、第二调用方法;第五获得单元:所述第五获得单元用于基于本地环境加载所述第一目标类,获得所述第一方法调用链中各调用方法的本地执行耗时,分别记作第一本地执行耗时、第二本地执行耗时;第六获得单元:所述第六获得单元用于利用instrument技术,开发获得第一Agent程序;第七获得单元:所述第七获得单元用于基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,分别记作第一执行耗时、第二执行耗时;第八获得单元:所述第八获得单元用于对比所述第一本地执行耗时和所述第一执行耗时、所述第二本地执行耗时和所述第二执行耗时,基于预设时间差阈值筛选获得第一异常方法集合。
第三方面,本发明还提供了一种基于Arthas的异常定位系统,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现上述第一方面所述方法的步骤。
第四方面,一种电子设备,其中,包括处理器和存储器;
该存储器,用于存储;
该处理器,用于通过调用,执行上述第一方面中任一项所述的方法。
第五方面,一种计算机程序产品,包括计算机程序和/或指令,该计算机程序和/或指令被处理器执行时实现上述第一方面中任一项所述方法的步骤。
本发明中提供的一个或多个技术方案,至少具有如下技术效果或优点:
1.通过基于第一目标jvm,加载第一目标类,进一步将第一目标类实例化得到第一实例,对应得到第一目标方法和第一方法调用链。然后在本地环境中运行第一方法调用链,从而统计得到第一方法调用链中各方法在本地执行时的耗时数据。进一步的,利用instrument技术开发第一Agent程序,在加载第一目标类时调用所述第一Agent程序,从而计算得到第一方法调用链中各方法在生产环境下执行时的实际耗时数据。最后对比第一方法调用链中各方法的本地耗时数据和实际耗时数据,筛选得到耗时异常的方法,以备进一步分析。通过调用instrument技术开发的Agent程序,实现了快速定位异常方法的技术目标,在不修改业务代码的前提下简单、快速定位异常方法,达到了提高异常方法的定位效率和精度,同时降低异常方法定位的成本和难度的技术效果。
2.通过instrument技术,达到了对第一目标jvm中正在运行的java程序的字节码进行动态修改、重新加载、重新实例化的技术效果。
3.通过premain方法实现了基于第一目标jvm加载而同时加载第一Agent程序,通过agentmain方法实现了基于第一目标jvm后,再次加载第一Agent程序,最终均达到了对第一Agent程序调用的技术效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明一种基于Arthas的异常定位方法的流程示意图;
图2为本发明一种基于Arthas的异常定位方法中开发获得第一Agent程序的流程示意图;
图3为本发明一种基于Arthas的异常定位方法中加载所述第一Agent程序的流程示意图;
图4为本发明一种基于Arthas的异常定位方法中加载所述第一Agent程序的另一种方法的的流程示意图;
图5为本发明一种基于Arthas的异常定位系统的结构示意图;
图6为本发明示例性电子设备的结构示意图。
附图标记说明:
第一获得单元11,第二获得单元12,第三获得单元13,第四获得单元14,第五获得单元15,第六获得单元16,第七获得单元17,第八获得单元18,总线300,接收器301,处理器302,发送器303,存储器304,总线接口305。
具体实施方式
本发明通过提供一种基于Arthas的异常定位方法及系统,解决了现有技术中通过硬编码、动态代理技术或JVMTI定位具体异常方法,均存在操作繁琐复杂、耗时长,或开发新类成本高、占用存储空间多,或难度高的技术问题。通过调用instrument技术开发的Agent程序,实现了快速定位异常方法的技术目标,在不修改业务代码的前提下简单、快速定位异常方法,达到了提高异常方法的定位效率和精度,同时降低异常方法定位的成本和难度的技术效果。
本发明技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
下面,将参考附图对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部。
本发明提供了一种基于Arthas的异常定位方法,所述方法应用于一种基于Arthas的异常定位系统,其中,所述方法包括:通过基于第一目标jvm,获得第一目标类;将所述第一目标类进行实例化处理,获得第一实例Class File Trans former;基于所述第一实例Class File Trans former,获得第一目标方法,其中,所述第一目标方法与所述第一目标类对应;基于所述第一目标方法,获得第一方法调用链,其中,所述第一方法调用链包括第一调用方法、第二调用方法;基于本地环境加载所述第一目标类,获得所述第一方法调用链中各调用方法的本地执行耗时,分别记作第一本地执行耗时、第二本地执行耗时;利用instrument技术,开发获得第一Agent程序;基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,分别记作第一执行耗时、第二执行耗时;对比所述第一本地执行耗时和所述第一执行耗时、所述第二本地执行耗时和所述第二执行耗时,基于预设时间差阈值筛选获得第一异常方法集合。
在介绍了本发明基本原理后,下面将结合说明书附图来具体介绍本发明的各种非限制性的实施方式。
实施例一
请参阅附图1,本发明提供了一种基于Arthas的异常定位方法,其中,所述方法应用于一种基于Arthas的异常定位系统,所述方法具体包括如下步骤:
步骤S100:基于第一目标jvm,获得第一目标类;
具体而言,所述一种基于Arthas的异常定位方法应用于所述一种基于Arthas的异常定位系统,可以通过调用instrument技术开发的Agent程序,实现快速定位异常方法的技术目标。其中,所述Arthas是Alibaba开源的Java诊断工具,可以快速诊断异常代码。所述第一目标jvm即Java虚拟机,用于对待检测、定位的目标类进行加载。通过第一目标jvm可以得到所述第一目标类。其中,所述第一目标类是指面向对象程序设计的信息封装基础,举例如System Audit Controller类。通过获得待检测定位的目标类,为后续确定目标类对应的实例提供了基础。
步骤S200:将所述第一目标类进行实例化处理,获得第一实例Class File Transformer;
具体而言,通过将所述第一目标类进行实例化处理,可以得到所述第一目标类对应的第一实例Class File Trans former,即所述第一目标类的对象。其中,所述实例化是指面向对象编程中,用类进行对象创建的过程。通过实例化处理,明确了第一目标类的类和对象,为后续确定检测异常范围提供基础。
步骤S300:基于所述第一实例Class File Trans former,获得第一目标方法,其中,所述第一目标方法与所述第一目标类对应;
步骤S400:基于所述第一目标方法,获得第一方法调用链,其中,所述第一方法调用链包括第一调用方法、第二调用方法;
具体而言,基于实例化处理得到的所述第一实例Class File Trans former,对应调用其方法export Wait Audit,即所述第一目标方法。其中,所述第一目标方法与所述第一目标类对应。进一步的,基于所述第一目标方法,可以得到第一目标方法中包括的多个外呼,即所述第一方法调用链。其中,所述第一方法调用链包括第一调用方法、第二调用方法等多个调用方法。通过获得第一方法调用链,达到了明确待计算响应、执行耗时的所有调用方法的技术效果。
步骤S500:基于本地环境加载所述第一目标类,获得所述第一方法调用链中各调用方法的本地执行耗时,分别记作第一本地执行耗时、第二本地执行耗时;
具体而言,在本地环境中,执行依次第一目标类,从而可以得到第一目标类对应的第一方法调用链中各调用方法的执行时长,即第一调用方法对应的所述第一本地执行耗时、第二调用方法对应的所述第二本地执行耗时……最后将得到的各调用方法的本地执行耗时作为参考基准,判断在生产环境中,各调用方法的执行耗时是否正常。通过获得第一方法调用链中各调用方法的执行时长,达到了为后续判断实际生产环境中各调用方法耗时是否正常提供参考基准,从而达到了提高异常方法判断准确率、判断可靠性的技术效果。
步骤S600:利用instrument技术,开发获得第一Agent程序;
步骤S700:基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,分别记作第一执行耗时、第二执行耗时;
具体而言,所述第一Agent程序是指待第一目标类调用的Agent程序,是一种以外挂形式被第一目标jvm加载和运行的程序。所述第一Agent程序可以通过C++进行开发,或者通过instrument技术来开发。其中,C++学习难度大,因此开发成本高。因此,使用instrument技术开发得到所述第一Agent程序。其中,所述instrument技术可以动态的对第一目标jvm中正在运行的java程序的字节码进行重写、重加载、改变方法执行。因此,借助instrument技术开发第一Agent程序,可以轻松获得目标方法的执行耗时,即所述第一方法调用链中各调用方法的执行耗时,分别记作第一执行耗时、第二执行耗时……通过第一Agent程序,达到了统计所述第一方法调用链中各调用方法在实际生产环境中的执行耗时的技术效果。
步骤S800:对比所述第一本地执行耗时和所述第一执行耗时、所述第二本地执行耗时和所述第二执行耗时,基于预设时间差阈值筛选获得第一异常方法集合。
具体而言,将所述第一方法调用链中各调用方法在实际生产环境中的执行耗时和在本地环境中的耗时进行一一对比,从而可以筛选得到异常的调用方法,所有耗时异常的调用方法组成所述第一异常方法集合,用于进一步的异常分析。通过调用instrument技术开发的Agent程序,实现了快速定位异常方法的技术目标,在不修改业务代码的前提下简单、快速定位异常方法,达到了提高异常方法的定位效率和精度,同时降低异常方法定位的成本和难度的技术效果。
进一步的,如附图2所示,本发明步骤S600还包括:
步骤S610:基于所述第一目标类,获得第一目标类的第一字节码,并将所述第一字节码存储到第一代码区;
步骤S620:基于instrument技术,获得第一被监控类retransform Classes和第一添加转换类add Trans former;
步骤S630:将所述第一字节码记作所述第一被监控类retransform Classes;
步骤S640:当所述第一目标类在加载执行时,所述第一添加转换类add Transformer对所述第一字节码进行修改,获得第二字节码,并将所述第二字节码存储到所述第一代码区。
具体而言,首先基于所述第一目标类,获得第一目标类的第一字节码信息,并把得到的所述第一字节码信息存储到第一代码区。进一步,基于instrument技术可以得到Instrumentation接口中的第一被监控类retransform Classes和第一添加转换类addTrans former。其中,所述Instrumentation接口中定义的方法体现了instrument技术支持的功能。此外,所述第一被监控类retransform Classes在执行时,会被所述第一添加转换类add Trans former修改。进一步的,将所述第一字节码记作所述第一被监控类retransform Classes,当所述第一目标类在加载执行时,所述第一添加转换类add Transformer对所述第一字节码进行修改,修改后得到的字节码即为所述第二字节码,同样的,将所述第二字节码存储到所述第一代码区供再次加载时执行。通过instrument技术,达到了对第一目标jvm中正在运行的java程序的字节码进行动态修改、重新加载、重新实例化的技术效果。
进一步的,如附图3所示,本发明步骤S700还包括:
步骤S710a:基于所述第一Agent程序,编译获得第一动态链接库;
步骤S720a:将所述第一动态链接库加载至所述第一目标jvm;
步骤S730a:基于所述第一目标jvm加载所述第一目标类时,同时加载所述第一动态链接库,即在加载所述第一目标类时,同时通过premain方法加载所述第一Agent程序。
具体而言,基于instrument技术开发得到的所述第一Agent程序,编译后得到对应的第一动态链接库,进一步将所述第一动态链接库加载至所述第一目标jvm。基于所述第一目标jvm加载所述第一目标类时,同时加载所述第一动态链接库,即在加载所述第一目标类时,同时通过premain方法加载所述第一Agent程序。其中,所述premain方法是在第一目标jvm启动的时候执行。也就是说,所述第一Agent程序随着第一目标jvm加载主程序而同时加载。通过premain方法,实现了基于第一目标jvm加载而同时加载第一Agent程序,达到了对第一Agent程序调用的技术效果。
进一步的,如附图4所示,本发明步骤S700还包括:
步骤S710b:获得所述第一目标jvm的第一进程号;
步骤S720b:获得第二目标jvm,并基于所述第一进程号,将所述第二目标jvm通过Virtual Machine的attach方法连接至所述第一目标jvm;
步骤S730b:基于所述第一目标jvm加载所述第一目标类时,同时加载连接的所述第二目标jvm,即在加载所述第一目标类时,同时通过agentmain方法加载所述第一Agent程序。
具体而言,首先获得所述第一目标jvm加载时的第一进程号,进而基于所述第一进程号,第二目标jvm即可连接到所述第一目标jvm上。因此,基于所述第一目标jvm加载所述第一目标类时,同时加载连接在一起的所述第二目标jvm,即在加载所述第一目标类时,同时通过agentmain方法加载所述第一Agent程序。其中,所述agentmain方法是在第一目标jvm启动之后执行。也就是说,所述第一Agent程序附加在所述第二目标jvm上,在所述第一目标jvm加载主程序第一目标类时,所述第二目标jvm通过第一进程号与第一目标jvm连接,从而实现第一Agent程序的调用和运行。通过agentmain方法,实现了在第一目标jvm加载后,通过另一个目标jvm连接而实现第一Agent程序加载运行,最终达到了对第一Agent程序调用的技术效果。
进一步的,本发明步骤S700还包括:
步骤S740:基于所述第一Agent程序,获得所述第一目标jvm的第一运行信息;
步骤S750:基于所述第一运行信息,获得所述第一调用方法的第一开始时间、第一结束时间;
步骤S760:基于所述第一开始时间和所述第一结束时间,计算得到所述第一调用方法的第一执行耗时;
步骤S770:获得所述第二调用方法的第二执行耗时,进而获得所述第一方法调用链中各调用方法的执行耗时。
具体而言,基于所述第一Agent程序,获得所述第一目标jvm加载运行的全部信息,即所述第一运行信息。其中,所述第一运行信息包括线程分析、内存、堆、栈、类、方法、变量、事件、定时器处理等等。进一步的,基于所述第一运行信息,获得所述第一方法调用链中各调用方法执行前、后的时间,即得到第一调用方法的第一开始时间、第一结束时间,第二调用方法的第一开始时间、第一结束时间……最后基于所述第一开始时间和所述第一结束时间,相减计算得到对应的所述第一调用方法的第一执行耗时。同样的原理,可以得到所述第二调用方法的第二执行耗时……最终实现所述第一方法调用链中各调用方法的执行耗时统计。通过调用第一Agent程序,实现了对第一方法调用链中各调用方法的运行统计,达到了统计第一方法调用链中各调用方法的执行耗时的技术效果。
进一步的,本发明步骤S800还包括:
步骤S810:基于所述第一执行耗时和所述第一本地执行耗时,获得第一执行时间差,基于所述第二执行耗时和所述第二本地执行耗时,获得第二执行时间差;
步骤S820:基于所述第一执行时间差和所述第二执行时间差,组成第一执行时间差集合;
步骤S830:依次判断所述第一执行时间差集合中各执行时间差是否符合预设时间差阈值,获得第一判断结果集合;
步骤S840:基于所述第一判断结果集合,筛选不符合所述预设时间差阈值的执行时间差,反向匹配获得所述第一异常方法集合。
具体而言,基于实际生产环境和本地环境中分别运行得到的第一方法调用链中各调用方法的执行耗时,一一对比得到第一方法调用链中第一调用方法的第一执行耗时、第一本地执行耗时,相减计算得到第一调用方法对应的第一执行时间差。同样的方法,可以计算得到所述第一方法调用链中各调用方法的执行时间差,分别定为第二执行时间差……进而所有调用方法的执行时间差组成第一执行时间差集合。依次判断所述第一执行时间差集合中各执行时间差是否符合预设时间差阈值,所有调用方法的判断结果组成所述第一判断结果集合。其中,所述预设时间差阈值是指系统综合实际网络环境、实际运行和执行情况等,综合分析后预先设置的最大时间差范围。基于所述第一判断结果集合,筛选不符合所述预设时间差阈值的执行时间差,反向匹配对应的调用方法,从而获得所述第一异常方法集合。
通过与本地环境各调用方法执行时间进行对比,得到耗时异常的所有调用方法,即所述第一异常方法集合。达到了智能化快速获取所有异常调用方法,为后续进一步分析异常原因缩小范围的技术效果。
进一步的,本发明步骤S830还包括:
步骤S831:若所述第一执行时间差集合中的执行时间差符合预设时间差阈值,对应标记第一正常标签、第二正常标签;
步骤S832:若所述第一执行时间差集合中的执行时间差不符合预设时间差阈值,对应标记第一异常标签、第二异常标签;
步骤S833:基于所述第一正常标签、所述第二正常标签、所述第一异常标签、所述第二异常标签,组成所述第一判断结果集合。
具体而言,通过判断所述第一执行时间差集合中各执行时间差是否符合预设时间差阈值,当所述第一执行时间差集合中的执行时间差符合预设时间差阈值时,为对应的调用方法标记第一正常标签。当所述第一执行时间差集合中的执行时间差不符合预设时间差阈值时,为对应的调用方法对应标记第一异常标签。最后,统计所有标签结果组成所述第一判断结果集合。通过依次对第一方法调用链中各调用方法进行判断并对应标记,达到了明确各调用方法正常或异常情况的技术效果。
综上所述,本发明所提供的一种基于Arthas的异常定位方法具有如下技术效果:
1.通过基于第一目标jvm,加载第一目标类,进一步将第一目标类实例化得到第一实例,对应得到第一目标方法和第一方法调用链。然后在本地环境中运行第一方法调用链,从而统计得到第一方法调用链中各方法在本地执行时的耗时数据。进一步的,利用instrument技术开发第一Agent程序,在加载第一目标类时调用所述第一Agent程序,从而计算得到第一方法调用链中各方法在生产环境下执行时的实际耗时数据。最后对比第一方法调用链中各方法的本地耗时数据和实际耗时数据,筛选得到耗时异常的方法,以备进一步分析。通过调用instrument技术开发的Agent程序,实现了快速定位异常方法的技术目标,在不修改业务代码的前提下简单、快速定位异常方法,达到了提高异常方法的定位效率和精度,同时降低异常方法定位的成本和难度的技术效果。
2.通过instrument技术,达到了对第一目标jvm中正在运行的java程序的字节码进行动态修改、重新加载、重新实例化的技术效果。
3.通过premain方法实现了基于第一目标jvm加载而同时加载第一Agent程序,通过agentmain方法实现了基于第一目标jvm后,再次加载第一Agent程序,最终均达到了对第一Agent程序调用的技术效果。
实施例二
基于与前述实施例中一种基于Arthas的异常定位方法,同样发明构思,本发明还提供了一种基于Arthas的异常定位系统,请参阅附图5,所述系统包括:
第一获得单元11,所述第一获得单元11用于基于第一目标jvm,获得第一目标类;
第二获得单元12,所述第二获得单元12用于将所述第一目标类进行实例化处理,获得第一实例Class File Trans former;
第三获得单元13,所述第三获得单元13用于基于所述第一实例Class File Transformer,获得第一目标方法,其中,所述第一目标方法与所述第一目标类对应;
第四获得单元14,所述第四获得单元14用于基于所述第一目标方法,获得第一方法调用链,其中,所述第一方法调用链包括第一调用方法、第二调用方法;
第五获得单元15,所述第五获得单元15用于基于本地环境加载所述第一目标类,获得所述第一方法调用链中各调用方法的本地执行耗时,分别记作第一本地执行耗时、第二本地执行耗时;
第六获得单元16,所述第六获得单元16用于利用instrument技术,开发获得第一Agent程序;
第七获得单元17,所述第七获得单元17用于基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,分别记作第一执行耗时、第二执行耗时;
第八获得单元18,所述第八获得单元18用于对比所述第一本地执行耗时和所述第一执行耗时、所述第二本地执行耗时和所述第二执行耗时,基于预设时间差阈值筛选获得第一异常方法集合。
进一步的,所述系统还包括:
第九获得单元,所述第九获得单元用于基于所述第一目标类,获得第一目标类的第一字节码,并将所述第一字节码存储到第一代码区;
第十获得单元,所述第十获得单元用于基于instrument技术,获得第一被监控类retransform Classes和第一添加转换类add Trans former;
第一设置单元,所述第一设置单元用于将所述第一字节码记作所述第一被监控类retransform Classes;
第十一获得单元,所述第十一获得单元用于当所述第一目标类在加载执行时,所述第一添加转换类add Trans former对所述第一字节码进行修改,获得第二字节码,并将所述第二字节码存储到所述第一代码区。
进一步的,所述系统还包括:
第十二获得单元,所述第十二获得单元用于基于所述第一Agent程序,编译获得第一动态链接库;
第一执行单元,所述第一执行单元用于将所述第一动态链接库加载至所述第一目标jvm;
第二执行单元,所述第二执行单元用于基于所述第一目标jvm加载所述第一目标类时,同时加载所述第一动态链接库,即在加载所述第一目标类时,同时通过premain方法加载所述第一Agent程序。
进一步的,所述系统还包括:
第十三获得单元,所述第十三获得单元用于获得所述第一目标jvm的第一进程号;
第三执行单元,所述第三执行单元用于获得第二目标jvm,并基于所述第一进程号,将所述第二目标jvm通过Virtual Machine的attach方法连接至所述第一目标jvm;
第四执行单元,所述第四执行单元用于基于所述第一目标jvm加载所述第一目标类时,同时加载连接的所述第二目标jvm,即在加载所述第一目标类时,同时通过agentmain方法加载所述第一Agent程序。
进一步的,所述系统还包括:
第十四获得单元,所述第十四获得单元用于基于所述第一Agent程序,获得所述第一目标jvm的第一运行信息;
第十五获得单元,所述第十五获得单元用于基于所述第一运行信息,获得所述第一调用方法的第一开始时间、第一结束时间;
第十六获得单元,所述第十六获得单元用于基于所述第一开始时间和所述第一结束时间,计算得到所述第一调用方法的第一执行耗时;
第十七获得单元,所述第十七获得单元用于获得所述第二调用方法的第二执行耗时,进而获得所述第一方法调用链中各调用方法的执行耗时。
进一步的,所述系统还包括:
第十八获得单元,所述第十八获得单元用于基于所述第一执行耗时和所述第一本地执行耗时,获得第一执行时间差,基于所述第二执行耗时和所述第二本地执行耗时,获得第二执行时间差;
第一组成单元,所述第一组成单元用于基于所述第一执行时间差和所述第二执行时间差,组成第一执行时间差集合;
第十九获得单元,所述第十九获得单元用于依次判断所述第一执行时间差集合中各执行时间差是否符合预设时间差阈值,获得第一判断结果集合;
第二十获得单元,所述第二十获得单元用于基于所述第一判断结果集合,筛选不符合所述预设时间差阈值的执行时间差,反向匹配获得所述第一异常方法集合。
进一步的,所述系统还包括:
第一标记单元,所述第一标记单元用于若所述第一执行时间差集合中的执行时间差符合预设时间差阈值,对应标记第一正常标签、第二正常标签;
第二标记单元,所述第二标记单元用于若所述第一执行时间差集合中的执行时间差不符合预设时间差阈值,对应标记第一异常标签、第二异常标签;
第二组成单元,所述第二组成单元用于基于所述第一正常标签、所述第二正常标签、所述第一异常标签、所述第二异常标签,组成所述第一判断结果集合。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,前述图1实施例一中的一种基于Arthas的异常定位方法和具体实例同样适用于本实施例的一种基于Arthas的异常定位系统,通过前述对一种基于Arthas的异常定位方法的详细描述,本领域技术人员可以清楚的知道本实施例中一种基于Arthas的异常定位系统,所以为了说明书的简洁,在此不再详述。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
示例性电子设备
下面参考图6来描述本发明的电子设备。
图6图示了根据本发明的电子设备的结构示意图。
基于与前述实施例中一种基于Arthas的异常定位方法的发明构思,本发明还提供一种基于Arthas的异常定位系统,其上存储有计算机程序,该程序被处理器执行时实现前文所述一种基于Arthas的异常定位方法的任一方法的步骤。
其中,在图6中,总线架构(用总线300来代表),总线300可以包括任意数量的互联的总线和桥,总线300将包括由处理器302代表的一个或多个处理器和存储器304代表的存储器的各种电路链接在一起。总线300还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口305在总线300和接收器301和发送器303之间提供接口。接收器301和发送器303可以是同一个元件,即收发机,提供用于在传输介质上与各种其他装置通信的单元。
处理器302负责管理总线300和通常的处理,而存储器304可以被用于存储处理器302在执行操作时所使用的数据。
本发明提供了一种基于Arthas的异常定位方法,所述方法应用于一种基于Arthas的异常定位系统,其中,所述方法包括:通过基于第一目标jvm,获得第一目标类;将所述第一目标类进行实例化处理,获得第一实例Class File Trans former;基于所述第一实例Class File Trans former,获得第一目标方法,其中,所述第一目标方法与所述第一目标类对应;基于所述第一目标方法,获得第一方法调用链,其中,所述第一方法调用链包括第一调用方法、第二调用方法;基于本地环境加载所述第一目标类,获得所述第一方法调用链中各调用方法的本地执行耗时,分别记作第一本地执行耗时、第二本地执行耗时;利用instrument技术,开发获得第一Agent程序;基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,分别记作第一执行耗时、第二执行耗时;对比所述第一本地执行耗时和所述第一执行耗时、所述第二本地执行耗时和所述第二执行耗时,基于预设时间差阈值筛选获得第一异常方法集合。解决了现有技术中通过硬编码、动态代理技术或JVMTI定位具体异常方法,均存在操作繁琐复杂、耗时长,或开发新类成本高、占用存储空间多,或难度高的技术问题。通过调用instrument技术开发的Agent程序,实现了快速定位异常方法的技术目标,在不修改业务代码的前提下简单、快速定位异常方法,达到了提高异常方法的定位效率和精度,同时降低异常方法定位的成本和难度的技术效果。
本发明还提供一种电子设备,其中,包括处理器和存储器;
该存储器,用于存储;
该处理器,用于通过调用,执行上述实施例一中任一项所述的方法。
本发明还提供一种计算机程序产品,包括计算机程序和/或指令,该计算机程序和/或指令被处理器执行时实现上述实施例一中任一项所述方法的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全软件实施例、完全硬件实施例、或结合软件和硬件方面实施例的形式。此外,本发明为可以在一个或多个包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。而所述的计算机可用存储介质包括但不限于:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random AccessMemory,简称RAM)、磁盘存储器、只读光盘(Compact Disc Read-Only Memory,简称CD-ROM)、光学存储器等各种可以存储程序代码的介质。
本发明是参照本发明的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种基于Arthas的异常定位方法,其特征在于,所述方法应用于一种基于Arthas的异常定位系统,所述方法包括:
基于第一目标jvm,获得第一目标类;
将所述第一目标类进行实例化处理,获得第一实例Class File Trans former;
基于所述第一实例Class File Trans former,获得第一目标方法,其中,所述第一目标方法与所述第一目标类对应;
基于所述第一目标方法,获得第一方法调用链,其中,所述第一方法调用链包括第一调用方法、第二调用方法;
基于本地环境加载所述第一目标类,获得所述第一方法调用链中各调用方法的本地执行耗时,分别记作第一本地执行耗时、第二本地执行耗时;
利用instrument技术,开发获得第一Agent程序;
基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,分别记作第一执行耗时、第二执行耗时;
对比所述第一本地执行耗时和所述第一执行耗时、所述第二本地执行耗时和所述第二执行耗时,基于预设时间差阈值筛选获得第一异常方法集合。
2.如权利要求1所述的方法,其特征在于,所述利用instrument技术,开发获得第一Agent程序,包括:
基于所述第一目标类,获得第一目标类的第一字节码,并将所述第一字节码存储到第一代码区;
基于instrument技术,获得第一被监控类retransform Classes和第一添加转换类addTrans 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的第一运行信息;
基于所述第一运行信息,获得所述第一调用方法的第一开始时间、第一结束时间;
基于所述第一开始时间和所述第一结束时间,计算得到所述第一调用方法的第一执行耗时;
获得所述第二调用方法的第二执行耗时,进而获得所述第一方法调用链中各调用方法的执行耗时。
6.如权利要求1所述的方法,其特征在于,所述基于预设时间差阈值筛选获得第一异常方法集合,包括:
基于所述第一执行耗时和所述第一本地执行耗时,获得第一执行时间差,基于所述第二执行耗时和所述第二本地执行耗时,获得第二执行时间差;
基于所述第一执行时间差和所述第二执行时间差,组成第一执行时间差集合;
依次判断所述第一执行时间差集合中各执行时间差是否符合预设时间差阈值,获得第一判断结果集合;
基于所述第一判断结果集合,筛选不符合所述预设时间差阈值的执行时间差,反向匹配获得所述第一异常方法集合。
7.如权利要求6所述的方法,其特征在于,所述获得第一判断结果集合,还包括:
若所述第一执行时间差集合中的执行时间差符合预设时间差阈值,对应标记第一正常标签、第二正常标签;
若所述第一执行时间差集合中的执行时间差不符合预设时间差阈值,对应标记第一异常标签、第二异常标签;
基于所述第一正常标签、所述第二正常标签、所述第一异常标签、所述第二异常标签,组成所述第一判断结果集合。
8.一种基于Arthas的异常定位系统,其特征在于,所述系统包括:
第一获得单元:所述第一获得单元用于基于第一目标jvm,获得第一目标类;
第二获得单元:所述第二获得单元用于将所述第一目标类进行实例化处理,获得第一实例Class File Trans former;
第三获得单元:所述第三获得单元用于基于所述第一实例Class File Trans former,获得第一目标方法,其中,所述第一目标方法与所述第一目标类对应;
第四获得单元:所述第四获得单元用于基于所述第一目标方法,获得第一方法调用链,其中,所述第一方法调用链包括第一调用方法、第二调用方法;
第五获得单元:所述第五获得单元用于基于本地环境加载所述第一目标类,获得所述第一方法调用链中各调用方法的本地执行耗时,分别记作第一本地执行耗时、第二本地执行耗时;
第六获得单元:所述第六获得单元用于利用instrument技术,开发获得第一Agent程序;
第七获得单元:所述第七获得单元用于基于所述第一Agent程序,获得所述第一方法调用链中各调用方法的执行耗时,分别记作第一执行耗时、第二执行耗时;
第八获得单元:所述第八获得单元用于对比所述第一本地执行耗时和所述第一执行耗时、所述第二本地执行耗时和所述第二执行耗时,基于预设时间差阈值筛选获得第一异常方法集合。
9.一种电子设备,其特征在于,包括处理器和存储器;
所述存储器,用于存储;
所述处理器,用于通过调用,执行权利要求1~7中任一项所述的方法。
10.一种计算机程序产品,包括计算机程序和/或指令,其特征在于,该计算机程序和/或指令被处理器执行时实现权利要求1~7中任一项所述方法的步骤。
CN202210043763.9A 2022-01-14 2022-01-14 一种基于Arthas的异常定位方法及系统 Active CN114416412B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210043763.9A CN114416412B (zh) 2022-01-14 2022-01-14 一种基于Arthas的异常定位方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210043763.9A CN114416412B (zh) 2022-01-14 2022-01-14 一种基于Arthas的异常定位方法及系统

Publications (2)

Publication Number Publication Date
CN114416412A true CN114416412A (zh) 2022-04-29
CN114416412B CN114416412B (zh) 2024-07-16

Family

ID=81272985

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210043763.9A Active CN114416412B (zh) 2022-01-14 2022-01-14 一种基于Arthas的异常定位方法及系统

Country Status (1)

Country Link
CN (1) CN114416412B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115904878A (zh) * 2022-12-30 2023-04-04 支付宝(杭州)信息技术有限公司 业务变更处理方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108345542A (zh) * 2018-02-28 2018-07-31 腾讯科技(深圳)有限公司 一种应用程序中异常处理方法及装置
CN110795357A (zh) * 2019-11-04 2020-02-14 中国工商银行股份有限公司 程序监控方法及装置
CN111190832A (zh) * 2020-01-06 2020-05-22 成都库珀区块链科技有限公司 一种性能瓶颈定位和调优方法、装置及系统
CN111382023A (zh) * 2018-12-27 2020-07-07 中国移动通信集团贵州有限公司 代码故障定位方法、装置、设备及存储介质
WO2021109314A1 (zh) * 2019-12-06 2021-06-10 网宿科技股份有限公司 一种异常数据的检测方法、系统及设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108345542A (zh) * 2018-02-28 2018-07-31 腾讯科技(深圳)有限公司 一种应用程序中异常处理方法及装置
CN111382023A (zh) * 2018-12-27 2020-07-07 中国移动通信集团贵州有限公司 代码故障定位方法、装置、设备及存储介质
CN110795357A (zh) * 2019-11-04 2020-02-14 中国工商银行股份有限公司 程序监控方法及装置
WO2021109314A1 (zh) * 2019-12-06 2021-06-10 网宿科技股份有限公司 一种异常数据的检测方法、系统及设备
CN111190832A (zh) * 2020-01-06 2020-05-22 成都库珀区块链科技有限公司 一种性能瓶颈定位和调优方法、装置及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王子鹏;张树东;任仲山;胡建亚;: "基于性能分析的自适应插桩框架", 计算机测量与控制, no. 09, 19 September 2018 (2018-09-19) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115904878A (zh) * 2022-12-30 2023-04-04 支付宝(杭州)信息技术有限公司 业务变更处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN114416412B (zh) 2024-07-16

Similar Documents

Publication Publication Date Title
US9274923B2 (en) System and method for stack crawl testing and caching
US8938729B2 (en) Two pass automated application instrumentation
US6662362B1 (en) Method and system for improving performance of applications that employ a cross-language interface
US7475214B2 (en) Method and system to optimize java virtual machine performance
US20220012844A1 (en) Methods and apparatus to emulate graphics processing unit instructions
CN100405294C (zh) 在运行时期间优化计算机程序的系统与方法
US8352921B2 (en) Static analysis defect detection in the presence of virtual function calls
US20130159977A1 (en) Open kernel trace aggregation
CN100440163C (zh) 对计算机程序进行运行时分析的方法和系统
US20080028378A1 (en) Utilizing prior usage data for software build optimization
EP2615552A1 (en) System testing method
US20080307387A1 (en) Software development apparatus and method for providing performance prediction
US20090089800A1 (en) Method and Apparatus for Compensating for Instrumentation Overhead Using Execution Environment Overhead
EP3961404A1 (en) Method, system, and apparatus for monitoring blockchain smart contract
US20080127119A1 (en) Method and system for dynamic debugging of software
US20050120274A1 (en) Methods and apparatus to minimize debugging and testing time of applications
CN111125697B (zh) 基于缺陷摘要的智能合约缺陷可触发性检测方法及系统
US20210117202A1 (en) Methods and apparatus to generate graphics processing unit long instruction traces
US8418151B2 (en) Date and time simulation for time-sensitive applications
CN114416412A (zh) 一种基于Arthas的异常定位方法及系统
CN114048125A (zh) 一种测试用例确定方法、装置、计算设备及存储介质
CN115904928A (zh) 一种慢函数监控的插桩方法、装置、设备及存储介质
US20200285557A1 (en) Apparatus, method, and non-transitory computer-readable medium for analyzing trace information
CN113760696A (zh) 一种程序问题定位方法、装置、电子设备和存储介质
CN112433939B (zh) 智能合约的测试方法、装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant