CN108228147A - 一种性能数据日志获取方法及装置 - Google Patents

一种性能数据日志获取方法及装置 Download PDF

Info

Publication number
CN108228147A
CN108228147A CN201611162792.8A CN201611162792A CN108228147A CN 108228147 A CN108228147 A CN 108228147A CN 201611162792 A CN201611162792 A CN 201611162792A CN 108228147 A CN108228147 A CN 108228147A
Authority
CN
China
Prior art keywords
performance
java
bytecode
java class
target
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
CN201611162792.8A
Other languages
English (en)
Other versions
CN108228147B (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.)
China Mobile Communications Group Co Ltd
China Mobile Group Hunan Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Group Hunan 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 China Mobile Communications Group Co Ltd, China Mobile Group Hunan Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201611162792.8A priority Critical patent/CN108228147B/zh
Publication of CN108228147A publication Critical patent/CN108228147A/zh
Application granted granted Critical
Publication of CN108228147B publication Critical patent/CN108228147B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Abstract

本发明实施例提供一种性能数据日志获取方法及装置,所述方法包括:在Java虚拟机逐个加载目标应用程序中包括的Java类的过程中,若判断获知当前加载的目标Java类注册有预设回调函数,则中止加载所述目标Java类并回调进入性能链路代理;性能链路代理确定需要修改所述目标Java类的性能日志插件,调用所述性能日志插件对所述目标Java类的字节码进行修改,并将修改后的字节码返回给所述Java虚拟机;Java虚拟机继续加载所述目标Java类,并基于所述修改后的字节码自动获取所需要的性能数据日志。所述装置执行上述方法。本发明实施例提供的性能数据日志获取方法及装置,能够自动获取监控链路性能数据的日志。

Description

一种性能数据日志获取方法及装置
技术领域
本发明实施例涉及JAVA技术领域,具体涉及一种性能数据日志获取方法及装置。
背景技术
随着信息技术的快速发展,用户的需求呈现出多样化的趋势,对用户请求的处理过程也越发复杂,给处理用户请求过程中的各个链路性能的监控提出了新的挑战,例如,当用户发送一个用户请求,要经过如下的调用链路:用户请求到达NGINX(一个高性能的HTTP和反向代理服务器)代理服务器,再到web应用、web服务、集中数据缓存、数据库。
现有技术中主要通过由应用开发人员在各个调用环节手工编写性能日志,来实现对链路性能的监控,但是,由应用开发人员编写的性能监控代码,会导致性能监控的运维代码与应用业务代码耦合在一起,加重了运维和业务开发的耦合度,使得当需要变更时会引起较大的修改工作量,且容易犯错。以某一公司电子渠道为例,在完成第三代业务支撑系统改造后,拥有网厅、WAP厅、微厅、产商品中心、订单中心等10多个应用程序包,如果需要添加一个开源框架中的性能日志字段,则需要同时修改10多个程序包,严重增加了开发人员的工作量,极大的影响了链路性能监控的效率。
因此,如何减少开发人员的工作量,自动获取能够监控链路性能数据的日志,成为亟需解决的问题。
发明内容
针对现有技术存在的问题,本发明实施例提供一种性能数据日志获取方法及装置。
一方面,本发明实施例提供一种性能数据日志获取方法,包括:
在Java虚拟机逐个加载目标应用程序中包括的Java类的过程中,若判断获知当前加载的目标Java类注册有预设回调函数,则中止加载所述目标Java类并回调进入性能链路代理;
所述性能链路代理确定需要修改所述目标Java类的性能日志插件,调用所述性能日志插件对所述目标Java类的字节码进行修改,并将修改后的字节码返回给所述Java虚拟机;
所述Java虚拟机继续加载所述目标Java类,并基于所述修改后的字节码自动获取所需要的性能数据日志。
另一方面,本发明实施例提供一种性能数据日志获取装置,包括:
第一处理模块,用于在Java虚拟机逐个加载目标应用程序中包括的Java类的过程中,若判断获知当前加载的目标Java类注册有预设回调函数,则中止加载所述目标Java类并回调进入性能链路代理;
第二处理模块,用于控制所述性能链路代理确定需要修改所述目标Java类的性能日志插件,调用所述性能日志插件对所述目标Java类的字节码进行修改,并将修改后的字节码返回给所述Java虚拟机;
第三处理模块,用于控制所述Java虚拟机继续加载所述目标Java类,并基于所述修改后的字节码自动获取所需要的性能数据日志。
本发明实施例提供一种性能数据日志获取方法及装置,能够自动获取监控链路性能数据的日志,使得应用程序开发人员不需要重复编写程序代码,提高了应用程序开发整体流程的运营效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例性能数据日志获取方法的流程示意图;
图2为本发明实施例Java字节码增强技术实现机制图;
图3本发明实施例性能数据日志获取方法步骤流程图;
图4为本发明实施例性能数据日志获取装置的结构示意图;
图5为本发明实施例提供的装置实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例性能数据日志获取方法的流程示意图,如图1所示,本发明实施例提供的性能数据日志获取方法,包括以下步骤:
S1:在Java虚拟机逐个加载目标应用程序中包括的Java类的过程中,若判断获知当前加载的目标Java类注册有预设回调函数,则中止加载所述目标Java类并回调进入性能链路代理。
具体的,装置在Java虚拟机逐个加载目标应用程序中包括的Java类的过程中,若判断获知当前加载的目标Java类注册有预设回调函数,则中止加载所述目标Java类并回调进入性能链路代理。需要说明的是:预设回调函数可以是每个Java类共用的同一个回调函数Transformer Callback,预先定义并注册在Java虚拟机中,目标Java类可以理解为需要获取性能数据日志的Java类,性能链路代理Agent通过调取Transformer Callback中Java类的原字节码相关的参数,以使得性能链路代理Agent从Java虚拟机的内存中获取到Java类的原字节码。
S2:所述性能链路代理确定需要修改所述目标Java类的性能日志插件,调用所述性能日志插件对所述目标Java类的字节码进行修改,并将修改后的字节码返回给所述Java虚拟机。
具体的,装置控制所述性能链路代理确定需要修改所述目标Java类的性能日志插件,调用所述性能日志插件对所述目标Java类的字节码进行修改,并将修改后的字节码返回给所述Java虚拟机。需要说明的是:每个目标Java类一一对应有一个性能日志插件,性能日志插件可以预先存储于性能日志插件平台中,可以在性能链路代理中预先搭建性能日志插件平台,做到性能日志插件统一管理,实现高扩展。
目前已经实现了spring、dubbo、web Service等多种调用协议、mysql、oracle、mybatis、redis缓存调用等多种技术框架的性能日志插件,实现全局自动化添加性能日志。如果有新的技术框架或者修改原来的技术框架,都只需要在此插件平台新增插件或者修改插件,扩展性非常强。
以针对dubbo中心化架构性能日志插件为例:只需按照性能链路代理Agent插件平台规范新建一个性能日志插件,如:DubboPlugin,继承相关插件平台系统继承类,并指明需修改Dubbo中心化架构中的JAVA类:com.alibaba.dubbo.rpc.cluster.support.AbstractClusterInvoker类,当Java虚拟机加载到该类文件时将回调进入性能链路代理Agent,从而找到已建好的该插件DubboPlugin,实现对该类中的invoke函数中字节码的修改,该函数实现了dubbo的远程调用,进一步需要指出的是:invoke函数的查找,是通过预先将函数名“invoke”与目标应用程序Java类中原字节码内容相关联,从而使得回调到插件后,能够查找出与每个Java类一一对应的函数名“invoke”,在invoke函数中可以加入Dubbo Consumer Interceptor拦截器,在拦截器中实现远程调用性能日志生成代码的注入,可以在invoke函数中所有的代码前加入before()函数,并在所有的代码后加入after()函数,以此实现对所述目标Java类的字节码进行修改,并将修改后的字节码返回给所述Java虚拟机。
S3:所述Java虚拟机继续加载所述目标Java类,并基于所述修改后的字节码自动获取所需要的性能数据日志。
具体的,装置控制所述Java虚拟机继续加载所述目标Java类,并基于所述修改后的字节码自动获取所需要的性能数据日志。需要说明的是:在继续加载所述目标Java类过程时,Java虚拟机会调用拦截器中的before()函数和after()函数,实现了自动获取所需要的性能数据日志。
本发明实施例提供的性能数据日志获取方法,能够自动获取监控链路性能数据的日志,使得应用程序开发人员不需要重复编写程序代码,提高了应用程序开发整体流程的运营效率。
在上述实施例的基础上,所述方法还包括:
所述性能链路代理与所述Java虚拟机同步启动。
具体的,装置控制所述性能链路代理与所述Java虚拟机同步启动。需要说明的是:可以采用Java虚拟机的Java Agent运行参数指定性能链路代理Agent作为Java虚拟机的Java Agent,并进行同步启动,性能链路代理Agent利用Java Agent特性,可以获得在运行期对已加载类的字节码进行变更修改的能力。
本发明实施例提供的性能数据日志获取方法,通过同步启动Java虚拟机和性能链路代理,保证自动获取监控链路性能数据日志能够顺利进行。
在上述实施例的基础上,在Java虚拟机逐个加载目标应用程序中包括的Java类之前,所述方法还包括:
所述性能链路代理加载性能日志插件平台中的所有性能日志插件,各性能日志插件注册需要修改的JAVA类和目标函数。
具体的,装置控制所述性能链路代理加载性能日志插件平台中的所有性能日志插件,各性能日志插件注册需要修改的JAVA类和目标函数。需要说明的是:目标函数可以是上述实施例中的invoke函数,但不作具体的限定,关于各性能日志插件、性能日志插件平台和修改的JAVA类已在上述实施例中说明,此处不再赘述。
本发明实施例提供的性能数据日志获取方法,性能链路代理通过加载性能日志插件平台中的所有性能日志插件,进一步保证自动获取监控链路性能数据日志能够顺利进行。
在上述实施例的基础上,所述性能日志插件对所述目标Java类的字节码进行修改包括:
所述性能日志插件应用Java字节码增强技术,对所述目标Java类的字节码进行修改。
具体的,装置控制所述性能日志插件应用Java字节码增强技术,对所述目标Java类的字节码进行修改。需要说明的是:Java字节码增强技术指的是在应用Java字节码生成之后,性能链路代理Agent对其进行修改添加相关代码段,增强其功能,这种方式相当于对应用程序的二进制文件进行修改。Java字节码增强的应用场景主要是减少冗余代码,对开发人员屏蔽底层的实现细节。图2为本发明实施例Java字节码增强技术实现机制图,如图2所示,当Java虚拟机加载HttpWebService JAVA类的字节码时,性能链路代理Agent针对HttpWebService类的RPCInvoke函数进行字节码修改,添加了Interceptor.before()和Interceptor.after()字节码,Interceptor的before和after函数中实现了性能日志的添加。
本发明实施例提供的性能数据日志获取方法,通过应用Java字节码增强技术,实现了自动获取监控链路性能数据的日志。
在上述实施例的基础上,所述对所述目标Java类的字节码进行修改包括:
在所述目标Java类的字节码中的所述目标函数的前后,分别添加拦截器的before()方法和after()方法。
具体的,装置在所述目标Java类的字节码中的所述目标函数的前后,分别添加拦截器的before()方法和after()方法。具体说明请参照上述实施例,此处不再赘述。
本发明实施例提供的性能数据日志获取方法,通过添加拦截器的before()方法和after()方法,进一步保证了能够自动获取到监控链路性能数据的日志。
图3本发明实施例性能数据日志获取方法步骤流程图,结合图3具体说明本发明实施例性能数据日志获取方法步骤流程:
(1)Java虚拟机根据JavaAgent运行参数指定性能链路代理Agent,并与性能链路代理Agent进行同步启动。
(2)性能链路代理Agent加载性能日志插件平台的所有性能日志注入插件。
(3)性能日志注入插件会注册需修改的目标JAVA类名字和目标函数,Agent利用JAVA字节码增强技术对这些类在Java虚拟机中进行定义并注册一个回调函数TransformerCallback,当Java虚拟机加载到这些类时会回调进入到Agent中进行后续处理,同时Agent调取Transformer Callback中Java类的原字节码相关的参数,以获取到Java类的原字节码。
(4)启动目标应用程序,Java虚拟机逐步加载各个JAVA类。
(5)Java虚拟机在加载目标应用程序类的时候,如果该类已经注册过TransformerCallback,将回调进入性能链路代理Agent,Agent依次查找与需修改的目标JAVA类相关联的性能日志插件,性能日志插件预先根据原字节码的内容在每个类中定义的与原字节码中的部分字节码相一致的目标函数,通过在目标函数中所有的代码前加入before(),在所有的代码后加入after()的方法修改目标类的字节码,自动增加性能日志拦截器字节码。
(6)将修改后的字节码返回给Java虚拟机,并继续加载变更后的JAVA类。
(7)应用程序继续执行。
(8)拦截器Interceptor的before()和after()函数会被调用。
(9)自动获取到性能数据日志。
本发明实施例提供一种性能数据日志获取方法及装置,能够自动获取监控链路性能数据的日志,使得应用程序开发人员不需要重复编写程序代码,提高了应用程序开发整体流程的运营效率。
图4为本发明实施例性能数据日志获取装置的结构示意图,如图4所示,本实施例提供了一种性能数据日志获取装置,包括第一处理模块1、第二处理模块2和第三处理模块3,其中:
第一处理模块1用于在Java虚拟机逐个加载目标应用程序中包括的Java类的过程中,若判断获知当前加载的目标Java类注册有预设回调函数,则中止加载所述目标Java类并回调进入性能链路代理;第二处理模块2用于控制所述性能链路代理确定需要修改所述目标Java类的性能日志插件,调用所述性能日志插件对所述目标Java类的字节码进行修改并将修改后的字节码返回给所述Java虚拟机;第三处理模块3用于控制所述Java虚拟机继续加载所述目标Java类,并基于所述修改后的字节码自动获取所需要的性能数据日志。
具体的,第一处理模块1用于在Java虚拟机逐个加载目标应用程序中包括的Java类的过程中,若判断获知当前加载的目标Java类注册有预设回调函数,则中止加载所述目标Java类并回调进入性能链路代理,第二处理模块2用于控制所述性能链路代理确定需要修改所述目标Java类的性能日志插件,调用所述性能日志插件对所述目标Java类的字节码进行修改并将修改后的字节码返回给所述Java虚拟机,第三处理模块3用于控制所述Java虚拟机继续加载所述目标Java类,并基于所述修改后的字节码自动获取所需要的性能数据日志。
本发明实施例提供的性能数据日志获取装置,能够自动获取监控链路性能数据的日志,使得应用程序开发人员不需要重复编写程序代码,提高了应用程序开发整体流程的运营效率。
在上述实施例的基础上,所述装置还包括:
同步启动模块4用于控制所述性能链路代理与所述Java虚拟机同步启动。
具体的,同步启动模块4用于控制所述性能链路代理与所述Java虚拟机同步启动。
本发明实施例提供的性能数据日志获取装置,通过同步启动Java虚拟机和性能链路代理,保证自动获取监控链路性能数据日志能够顺利进行。
在上述实施例的基础上,所述装置还包括:
第四处理模块5用于控制所述性能链路代理加载性能日志插件平台中的所有性能日志插件,各性能日志插件注册需要修改的JAVA类和目标函数。
具体的,第四处理模块5用于控制所述性能链路代理加载性能日志插件平台中的所有性能日志插件,各性能日志插件注册需要修改的JAVA类和目标函数。
本发明实施例提供的性能数据日志获取装置,性能链路代理通过加载性能日志插件平台中的所有性能日志插件,进一步保证自动获取监控链路性能数据日志能够顺利进行。
在上述实施例的基础上,所述第二处理模块2具体用于控制所述性能日志插件应用Java字节码增强技术,对所述目标Java类的字节码进行修改。
具体的,所述第二处理模块2具体用于控制所述性能日志插件应用Java字节码增强技术,对所述目标Java类的字节码进行修改。
本发明实施例提供的性能数据日志获取装置,通过应用Java字节码增强技术,实现了自动获取监控链路性能数据的日志。
在上述实施例的基础上,所述第二处理模块2还具体用于在所述目标Java类的字节码中的所述目标函数的前后,分别添加拦截器的before()方法和after()方法。
具体的,所述第二处理模块2还具体用于在所述目标Java类的字节码中的所述目标函数的前后,分别添加拦截器的before()方法和after()方法。
本发明实施例提供的性能数据日志获取装置,通过添加拦截器的before()方法和after()方法,进一步保证了能够自动获取到监控链路性能数据的日志。
本实施例提供的性能数据日志获取装置具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图5为本发明实施例提供的装置实体结构示意图,如图5所示,所述装置包括:处理器(processor)501、存储器(memory)502和总线503;
其中,所述处理器501、存储器502通过总线503完成相互间的通信;
所述处理器501用于调用所述存储器502中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:在Java虚拟机逐个加载目标应用程序中包括的Java类的过程中,若判断获知当前加载的目标Java类注册有预设回调函数,则中止加载所述目标Java类并回调进入性能链路代理;所述性能链路代理确定需要修改所述目标Java类的性能日志插件,调用所述性能日志插件对所述目标Java类的字节码进行修改,并将修改后的字节码返回给所述Java虚拟机;所述Java虚拟机继续加载所述目标Java类,并基于所述修改后的字节码自动获取所需要的性能数据日志。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:在Java虚拟机逐个加载目标应用程序中包括的Java类的过程中,若判断获知当前加载的目标Java类注册有预设回调函数,则中止加载所述目标Java类并回调进入性能链路代理;所述性能链路代理确定需要修改所述目标Java类的性能日志插件,调用所述性能日志插件对所述目标Java类的字节码进行修改,并将修改后的字节码返回给所述Java虚拟机;所述Java虚拟机继续加载所述目标Java类,并基于所述修改后的字节码自动获取所需要的性能数据日志。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:在Java虚拟机逐个加载目标应用程序中包括的Java类的过程中,若判断获知当前加载的目标Java类注册有预设回调函数,则中止加载所述目标Java类并回调进入性能链路代理;所述性能链路代理确定需要修改所述目标Java类的性能日志插件,调用所述性能日志插件对所述目标Java类的字节码进行修改,并将修改后的字节码返回给所述Java虚拟机;所述Java虚拟机继续加载所述目标Java类,并基于所述修改后的字节码自动获取所需要的性能数据日志。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上各实施例仅用以说明本发明的实施例的技术方案,而非对其限制;尽管参照前述各实施例对本发明的实施例进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明的实施例各实施例技术方案的范围。

Claims (10)

1.一种性能数据日志获取方法,其特征在于,包括:
在Java虚拟机逐个加载目标应用程序中包括的Java类的过程中,若判断获知当前加载的目标Java类注册有预设回调函数,则中止加载所述目标Java类并回调进入性能链路代理;
所述性能链路代理确定需要修改所述目标Java类的性能日志插件,调用所述性能日志插件对所述目标Java类的字节码进行修改,并将修改后的字节码返回给所述Java虚拟机;
所述Java虚拟机继续加载所述目标Java类,并基于所述修改后的字节码自动获取所需要的性能数据日志。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述性能链路代理与所述Java虚拟机同步启动。
3.根据权利要求1所述的方法,其特征在于,在Java虚拟机逐个加载目标应用程序中包括的Java类之前,所述方法还包括:
所述性能链路代理加载性能日志插件平台中的所有性能日志插件,各性能日志插件注册需要修改的JAVA类和目标函数。
4.根据权利要求3所述的方法,其特征在于,所述性能日志插件对所述目标Java类的字节码进行修改包括:
所述性能日志插件应用Java字节码增强技术,对所述目标Java类的字节码进行修改。
5.根据权利要求4所述的方法,其特征在于,所述对所述目标Java类的字节码进行修改包括:
在所述目标Java类的字节码中的所述目标函数的前后,分别添加拦截器的before()方法和after()方法。
6.一种性能数据日志获取装置,其特征在于,包括:
第一处理模块,用于在Java虚拟机逐个加载目标应用程序中包括的Java类的过程中,若判断获知当前加载的目标Java类注册有预设回调函数,则中止加载所述目标Java类并回调进入性能链路代理;
第二处理模块,用于控制所述性能链路代理确定需要修改所述目标Java类的性能日志插件,调用所述性能日志插件对所述目标Java类的字节码进行修改,并将修改后的字节码返回给所述Java虚拟机;
第三处理模块,用于控制所述Java虚拟机继续加载所述目标Java类,并基于所述修改后的字节码自动获取所需要的性能数据日志。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
同步启动模块,用于控制所述性能链路代理与所述Java虚拟机同步启动。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第四处理模块,用于控制所述性能链路代理加载性能日志插件平台中的所有性能日志插件,各性能日志插件注册需要修改的JAVA类和目标函数。
9.根据权利要求8所述的装置,其特征在于,所述第二处理模块具体用于,控制所述性能日志插件应用Java字节码增强技术,对所述目标Java类的字节码进行修改。
10.根据权利要求9所述的装置,其特征在于,所述第二处理模块具体用于,在所述目标Java类的字节码中的所述目标函数的前后,分别添加拦截器的before()方法和after()方法。
CN201611162792.8A 2016-12-15 2016-12-15 一种性能数据日志获取方法及装置 Active CN108228147B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611162792.8A CN108228147B (zh) 2016-12-15 2016-12-15 一种性能数据日志获取方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611162792.8A CN108228147B (zh) 2016-12-15 2016-12-15 一种性能数据日志获取方法及装置

Publications (2)

Publication Number Publication Date
CN108228147A true CN108228147A (zh) 2018-06-29
CN108228147B CN108228147B (zh) 2021-09-21

Family

ID=62650620

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611162792.8A Active CN108228147B (zh) 2016-12-15 2016-12-15 一种性能数据日志获取方法及装置

Country Status (1)

Country Link
CN (1) CN108228147B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110119322A (zh) * 2019-05-08 2019-08-13 北京三快在线科技有限公司 数据获取方法、装置、计算机设备及可读存储介质
CN110297623A (zh) * 2019-07-03 2019-10-01 广州虎牙科技有限公司 日志展示方法及装置
CN110347406A (zh) * 2019-07-12 2019-10-18 四川虹美智能科技有限公司 一种采集应用的运行数据的方法及装置
CN110895503A (zh) * 2018-09-12 2020-03-20 传线网络科技(上海)有限公司 一种应用的性能监控方法及客户端
CN111045746A (zh) * 2018-10-12 2020-04-21 北京京东尚科信息技术有限公司 代码扩展方法和框架
CN111443901A (zh) * 2018-12-27 2020-07-24 北京奇虎科技有限公司 一种基于Java反射的业务扩展方法及装置
CN111614483A (zh) * 2020-04-08 2020-09-01 拉扎斯网络科技(上海)有限公司 链路监控方法、装置、存储介质及计算机设备
CN111985810A (zh) * 2020-08-19 2020-11-24 支付宝(杭州)信息技术有限公司 一种数据处理方法、装置及设备
CN113254317A (zh) * 2021-07-02 2021-08-13 浩鲸云计算科技股份有限公司 基于字节码的指标自动生成方法及系统
CN115390913A (zh) * 2022-10-28 2022-11-25 平安银行股份有限公司 零代码侵入的日志监控方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102122263A (zh) * 2011-03-23 2011-07-13 成都勤智数码科技有限公司 一种java应用系统运行时监控方法和装置
WO2012065845A1 (en) * 2010-11-16 2012-05-24 Syddansk Universitet Method for dynamically transforming the bytecode of java virtual machine bootstrap classes
CN103150494A (zh) * 2013-03-05 2013-06-12 华为技术有限公司 Java类对象的解扰运行方法、加扰形成方法及其装置
CN103793237A (zh) * 2012-10-31 2014-05-14 中国移动通信集团浙江有限公司 J2ee 应用系统性能瓶颈定位方法与装置
CN104346148A (zh) * 2013-07-30 2015-02-11 阿里巴巴集团控股有限公司 获取程序性能消耗信息的方法、装置及系统
CN105808266A (zh) * 2016-03-29 2016-07-27 广州华多网络科技有限公司 代码运行方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012065845A1 (en) * 2010-11-16 2012-05-24 Syddansk Universitet Method for dynamically transforming the bytecode of java virtual machine bootstrap classes
CN102122263A (zh) * 2011-03-23 2011-07-13 成都勤智数码科技有限公司 一种java应用系统运行时监控方法和装置
CN103793237A (zh) * 2012-10-31 2014-05-14 中国移动通信集团浙江有限公司 J2ee 应用系统性能瓶颈定位方法与装置
CN103150494A (zh) * 2013-03-05 2013-06-12 华为技术有限公司 Java类对象的解扰运行方法、加扰形成方法及其装置
CN104346148A (zh) * 2013-07-30 2015-02-11 阿里巴巴集团控股有限公司 获取程序性能消耗信息的方法、装置及系统
CN105808266A (zh) * 2016-03-29 2016-07-27 广州华多网络科技有限公司 代码运行方法及装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110895503B (zh) * 2018-09-12 2024-04-12 阿里巴巴(中国)有限公司 一种应用的性能监控方法及客户端
CN110895503A (zh) * 2018-09-12 2020-03-20 传线网络科技(上海)有限公司 一种应用的性能监控方法及客户端
CN111045746A (zh) * 2018-10-12 2020-04-21 北京京东尚科信息技术有限公司 代码扩展方法和框架
CN111443901A (zh) * 2018-12-27 2020-07-24 北京奇虎科技有限公司 一种基于Java反射的业务扩展方法及装置
CN111443901B (zh) * 2018-12-27 2024-02-09 三六零科技集团有限公司 一种基于Java反射的业务扩展方法及装置
CN110119322B (zh) * 2019-05-08 2022-05-10 北京三快在线科技有限公司 数据获取方法、装置、计算机设备及可读存储介质
CN110119322A (zh) * 2019-05-08 2019-08-13 北京三快在线科技有限公司 数据获取方法、装置、计算机设备及可读存储介质
CN110297623A (zh) * 2019-07-03 2019-10-01 广州虎牙科技有限公司 日志展示方法及装置
CN110347406A (zh) * 2019-07-12 2019-10-18 四川虹美智能科技有限公司 一种采集应用的运行数据的方法及装置
CN111614483A (zh) * 2020-04-08 2020-09-01 拉扎斯网络科技(上海)有限公司 链路监控方法、装置、存储介质及计算机设备
CN111985810A (zh) * 2020-08-19 2020-11-24 支付宝(杭州)信息技术有限公司 一种数据处理方法、装置及设备
CN113254317A (zh) * 2021-07-02 2021-08-13 浩鲸云计算科技股份有限公司 基于字节码的指标自动生成方法及系统
CN115390913A (zh) * 2022-10-28 2022-11-25 平安银行股份有限公司 零代码侵入的日志监控方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN108228147B (zh) 2021-09-21

Similar Documents

Publication Publication Date Title
CN108228147A (zh) 一种性能数据日志获取方法及装置
US8661407B2 (en) Framework for programming embedded system applications
CN100461096C (zh) 动态注册表分区系统和方法
US11237845B2 (en) Methods for remote configuration of software applications
CN108234641A (zh) 基于分布式一致性协议实现的数据读写方法及装置
WO2019186282A1 (en) Updateable smart contracts
JP2007524875A (ja) ネットワーク・ベースの処理のためのシステムおよび方法
CN102495735A (zh) web 端UI组件应用框架系统
CN110187902A (zh) 基于spring boot的项目改造方法、装置、设备及存储介质
US9456017B2 (en) System and method for a connector being able to adapt to newer features introduced to a messaging provider with only configuration changes
CN107977218A (zh) 代码更新方法、装置、电子设备及可读存储介质
AU2013213683B2 (en) A method and system of application development for multiple device client platforms
CN103853535A (zh) 修改中间件的方法和装置
US20080059957A1 (en) Method of compiling source code, compiler, computer system, and computer program product
US20130227572A1 (en) Test device, a system, a program and a method
CN107463422A (zh) 代码部署方法及装置、电子设备
US20080229274A1 (en) Automating Construction of a Data-Source Interface For Component Applications
EP3366050B1 (en) Method for updating a package
US20150295984A1 (en) Multi Web Application Management Framework System and Method
CN109343970B (zh) 基于应用程序的操作方法、装置、电子设备及计算机介质
CN110109684A (zh) 区块链节点管理代理服务安装方法、电子装置及存储介质
CN106598662A (zh) 基于android的应用加载方法及装置
CN113760264A (zh) 多应用之间组件复用的方法和装置
CN110109912A (zh) 一种标识符生成方法和装置
EP2887213A1 (en) Method for transferring applicative data between two instances of an application

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