CN111813633A - 性能监控方法、装置、设备及可读存储介质 - Google Patents
性能监控方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN111813633A CN111813633A CN202010699320.6A CN202010699320A CN111813633A CN 111813633 A CN111813633 A CN 111813633A CN 202010699320 A CN202010699320 A CN 202010699320A CN 111813633 A CN111813633 A CN 111813633A
- Authority
- CN
- China
- Prior art keywords
- performance monitoring
- proxy
- java
- thread
- database
- 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.)
- Pending
Links
- 238000012544 monitoring process Methods 0.000 title claims abstract description 202
- 238000000034 method Methods 0.000 title claims abstract description 96
- 238000012806 monitoring device Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012946 outsourcing Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种性能监控方法、装置、设备及可读存储介质,所述方法包括:在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程,而后基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标,基于所述监控数据指标对所述对象进行性能监控。通过利用Java代理模式构建性能监控线程,利用该性能监控线程拦截监控对象的监控数据指标,从而达到全方位***监控,并且采用代理模式对监控对象进行监控,不需要更改现有的业务逻辑代码,实现性能监控线程的可插拔。
Description
技术领域
本发明涉及JAVA代理领域,尤其涉及一种性能监控方法、装置、设备及可读存储介质。
背景技术
在软件开发过程中,不同的程序员会写出不同的性能的SQL及HESSIAN接口,有时候可能会因为程序员失误或经验不足而写出性能很差的SQL语句或HESSIAN接口等,同时随着***功能的不断增加,***中的SQL和HESSIAN接口越来越多,我们却无法知道他们的运行情况,例如,每个SQL或HESSIAN接口的执行耗时不清楚。现有的对SQL或HESSIAN接口缺乏全方位的***监控,有时可以借助外购工具或者需要DBA帮忙,但对运维人员、开发人员技术要求过高,并且监测到的参数很少,当出现异常时时,运维人员与开发人员难以迅速定位并解决问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种性能监控方法、装置、设备及可读存储介质,旨在解决现有缺乏对SQL或HESSIAN接口全方位进行***监控的技术问题。
为实现上述目的,本发明提供一种性能监控方法,所述的性能监控方法包括以下步骤:
在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程;
基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标,基于所述监控数据指标对所述对象进行性能监控。
进一步地,所述性能监控指令对应的对象为数据库,所述在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程的步骤包括:
利用JAVA的JDBC接口,通过JAVA的代理模式生成所述数据库的代理对象;
通过所述性能监控线程执行所述数据库的代理对象对应的方法。
进一步地,所述利用JAVA的JDBC接口,通过JAVA的代理模式生成所述数据库的代理对象的步骤包括:
通过JAVA的代理模式生成数据源代理对象,以对所述数据库的数据源进行代理;
通过所述代理数据源对象得到所述数据库链接代理对象,并代理所述数据库的预编译方法,得到预编译方法的代理对象。
进一步地,所述基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标的步骤包括:
通过所述数据库链接代理对象、所述预编译方法的代理对象,获取所述数据库对应的被执行的数据库语句对应的执行参数,并将所述执行参数作为所述监控数据指标。
进一步地,所述性能监控指令对应的对象为HESSIAN接口,所述在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程的步骤包括:
通过JAVA的代理模式对所述HESSIAN接口进行代理,生成所述HESSIAN接口的代理对象;
通过所述性能监控线程执行所述HESSIAN接口的代理对象对应的方法。
进一步地,所述基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标的步骤包括:
通过所述HESSIAN接口的代理对象,获取所述HESSIAN接口对应的被执行的原始方法对应的执行参数,并将所述执行参数作为所述监控数据指标。
进一步地,所述Java代理模式为JDK动态代理。
进一步地,所述性能监控装置包括:
构建模块,用于在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程;
采集模块,用于基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标,基于所述监控数据指标对所述对象进行性能监控。
此外,为实现上述目的,本发明还提供一种设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的性能监控程序,所述性能监控程序被所述处理器执行时实现上述任一项所述的性能监控方法的步骤。
此外,为实现上述目的,本发明还提供一种可读存储介质,所述可读存储介质上存储有性能监控程序,所述性能监控程序被处理器执行时实现上述任一项所述的性能监控方法的步骤。
本发明在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程,而后基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标,基于所述监控数据指标对所述对象进行性能监控。通过利用Java代理模式构建性能监控线程,利用该性能监控线程拦截监控对象的监控数据指标,从而达到全方位***监控,并且采用代理模式对监控对象进行监控,不需要更改现有的业务逻辑代码,实现性能监控线程的可插拔。
附图说明
图1是本发明实施例方案涉及的硬件运行环境中设备的结构示意图;
图2为本发明性能监控方法第一实施例的流程示意图;
图3为本发明性能监控方法第二实施例的流程示意图;
图4为本发明性能监控装置实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境中设备的结构示意图。
如图1所示,该设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的目标检测***结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及基于性能监控程序。
在图1所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接用户端,与用户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的基于性能监控程序。
在本实施例中,设备包括:存储器1005、处理器1001及存储在所述存储器1005上并可在所述处理器1001上运行的基于性能监控程序,其中,处理器1001调用存储器1005中存储的基于性能监控程序时,执行本申请各个实施例提供的基于性能监控方法的步骤。
本发明还提供一种性能监控方法,参照图2,图2为本发明性能监控方法第一实施例的流程示意图。
本发明提供了性能监控方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中,该性能监控方法包括:
步骤S100,在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程;
在本实施例中,代理模式的核心作用就是通过代理,控制对对象的访问。它的设计思路是:定义一个抽象角色,让代理角色和真实角色分别去实现它。真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用,它只关注真正的业务逻辑。代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并在前后可以附加自己的操作。通过代理,可以详细控制访问某个或者某类对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。代理模式分为静态代理和动态代理,其中,静态代理是我们自己创建一个代理类,动态代理又分为1、JDK动态代理:用于目标类实现了接口;2、Cglib动态代理:用于目标类没有实现接口。在本发明中采用JDK动态代理技术实现,动态代理是JDK1.3之后提供的开发技术,它允许开发者在程序运行期间创建接口的代理实例。JDK的动态代理主要涉及到java.lang.reflect包中的两个类:Proxy和InvocationHandler。InvocationHandler是一个接口,可以通过实现该接口进行性能监控。JDK动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理。
如前所述,在软件开发过程中,不同的程序员会写出不同的性能的SQL及HESSIAN接口,有时候可能会因为程序员失误或经验不足而写出性能很差的SQL语句或HESSIAN接口等,同时随着***功能的不断增加,***中的SQL和HESSIAN接口越来越多,我们却无法知道他们的运行情况,例如,每个SQL或HESSIAN接口的执行耗时不清楚。现有的对SQL或HESSIAN接口缺乏全方位的***监控,有时可以借助外购工具或者需要DBA帮忙,但对运维人员、开发人员技术要求过高,并且监测到的参数很少,当出现异常时时,运维人员与开发人员难以迅速定位并解决问题。故本发明提出的性能监控方法,采用Java代理模式构建性能监控线程,利用该性能监控线程拦截监控对象的监控数据指标,从而达到全方位***监控,并且采用代理模式对监控对象进行监控,不需要更改现有的业务逻辑代码,实现性能监控线程的可插拔。
进一步地,性能监控线程对应用来说完全是松耦合的,根本不需要更改已有的业务逻辑代码,完全是可插拔的,故可以在需要时随时启动,如在不同阶段,开发阶段使用性能监控线程,在部署阶段停止性能监控线程,也就是在接收到性能监控指令时,即利用Java代理模式构建性能监控线程并启动所述性能监控线程,同理,在接收到停止性能监控指令时,停止运行并释放性能监控线程。其中,性能监控指令及停止性能监控指令可以人为触发,也可以根据预先设置监测条件自动触发。
具体地,步骤S100包括:
步骤S110,利用JAVA的JDBC接口,通过JAVA的代理模式生成所述数据库的代理对象;
具体地,步骤S110包括:
步骤S111,通过JAVA的代理模式生成数据源代理对象,以对所述数据库的数据源进行代理;
步骤S112,通过所述代理数据源对象得到所述数据库链接代理对象,并代理所述数据库的预编译方法,得到预编译方法的代理对象。
在本实施例中,Java访问数据库的框架有很多种,类似Mybatis、JPA等,但是万变不离其宗,最终都是通过JDBC接口去访问的。JDBC其实就是一套Java操作数据库的规范(接口),各个数据库厂商要让java语言去操作数据库就必须实现这套接口,每个数据库都写有一套实现类叫数据库驱动。在JDBC中,为了在DB中连接和执行语句,主要使用Connection、Statement和ResultSet作为接口。一般情况下,通过JDBC接口去访问数据库的流程大概分为6步骤:
第一步,加载数据源DataSource;
第二步,获得数据库链接Connection;
通过数据库的连接操作数据库,使用PreparedStatement类实现对数据库的相关操作;
第四步,设置参数;
第五步,获取查询的结果ResultSet;
第六步,处理查询结果。
进一步地,通过JAVA的代理模式,用动态代理类去实现JDBC接口,同时持有接口类的对象实例。数据库连接工厂原来是获得JDBC接口类后继续操作,改为获取代理类去操作,因代理类实现了JDBC接口,所以对调用方来说无感知,仍然以原有的方式调用。动态代理数据源DataSource,代理获取到的数据库链接Connection,代理perpareStatement方法,可以得到执行的sql语句。
具体地,使用JAVA的JDBC接口,通过JAVA的代理模式首先对数据源DataSource进行代理,获得DataSourceProxy,调用DataSourceProxy的getConnection方法获得ConnectionProxy,在getConnection过程中,DataSourceProxy将真实的Connection注入ConnectionProxy。
线程(英语:thread)是操作***能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在本发明中,性能监控线程是独立运行的,用于实现对数据库的代理,通过代理的方式可以监控数据库的数据处理过程,性能监控线程是利用Java代理模式构建的。
步骤S120,通过所述性能监控线程执行所述数据库的代理对象对应的方法。
在本实施例中,通过JAVA的代理模式生成数据源代理对象,以对所述数据库的数据源进行代理,通过所述代理数据源对象得到所述数据库链接代理对象,并代理所述数据库的预编译方法,得到预编译方法的代理对象,即通过java的代理模式对DataSource、Connection和PreparedStatement进行代理,启动性能监控线程,数据库***通过代理的方式执行代理对象对应的方法。需要说明的是,通过代理,可以详细控制访问某个或者某类对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理,代理对象中注原真实对象的方法,用于去实现数据库的处理逻辑。
步骤S200,基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标,基于所述监控数据指标对所述对象进行性能监控。
具体地,步骤S200包括:通过所述数据库链接代理对象、所述预编译方法的代理对象,获取所述数据库对应的被执行的数据库语句对应的执行参数,并将所述执行参数作为所述监控数据指标。
在本实施例中,基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标,基于所述监控数据指标对所述对象进行性能监控。性能监控线程采集与数据库进行交互对应的实现交易类型、交易流水号、发生异常时对应的错误类型,数据库语句的执行耗时、执行内容、执行参数,执行该数据库指令的IP地址等关键信息,这些数据即为监控数据指标。
具体地,通过所述数据库链接代理对象、所述预编译方法的代理对象,获取所述数据库对应的被执行的数据库语句对应的执行参数,并将所述执行参数作为所述监控数据指标。通过java的代理模式对Connection、PreparedStatement进行代理,获得ConnectionProxy,PreparedStatementProxy,拦截ConnectionProxy和PreparedStatementProxy中的SQL语句。这样每次执行的SQL堆栈、语句、执行时间、参数、结果等就可以得到汇总,并写入一个队列中。
例如,将SQL语句记录到日志或Monitor类的一个静态属性中在执行SQL语句前记录执行开始时间,在SQL语句执行结束后,清除Monitor类静态属性中的SQL语句和执行开始时间,比较执行开始时间与执行结束时间即可得出执行时间,并记录到日志文件。
举例说明,如表1所示,表1中显示的就是性能监控线程采集的监控数据指标,其中包括运行执行SQL语句(方法)的具体内容,其需要的执行时间即耗时10ns,发生异常时对应的错误类型,执行该SQL语句的后置机的IP地址以及执行SQL语句的开始时间。通过耗时可以判断该SQL语句的执行效率,根据发生异常时对应的错误类型可以帮助快速定位并解决问题。
表1
本实施例提出的性能监控方法,在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程,而后基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标,基于所述监控数据指标对所述对象进行性能监控。通过利用Java代理模式构建性能监控线程,利用该性能监控线程拦截监控对象的监控数据指标,从而达到全方位***监控,并且采用代理模式对监控对象进行监控,不需要更改现有的业务逻辑代码,实现性能监控线程的可插拔。
基于第一实施例,参照图3,提出本发明性能监控方法的第二实施例,在本实施例中,步骤S100包括:
步骤S130,通过JAVA的代理模式对所述HESSIAN接口进行代理,生成所述HESSIAN接口的代理对象;
步骤S140,通过所述性能监控线程执行所述HESSIAN接口的代理对象对应的方法。
在本实施例中,性能监控线程不但可以监控数据库运行过程中的性能指标,还可以对HESSIAN接口的执行效率进行监控。Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。
具体地,调用性能监控线程,利用Spring AOP技术实现所有的Hessian接口的监控。AOP(Aspect-OrientedProgramming,面向切面编程),可以说是OOP(Object-OrientedPrograming,面向对象编程)的补充和完善。Spring中的AOP代理还是离不开Spring的IOC容器,代理的生成,管理及其依赖关系都是由IOC容器负责,Spring默认使用JDK动态代理,在需要代理类而不是代理接口的时候,Spring会自动切换为使用CGLIB代理,不过现在的项目都是面向接口编程,所以JDK动态代理相对来说用的还是多一些。本发明采用的是JDK动态代理。
通过JAVA的代理模式对所述HESSIAN接口进行代理,生成所述HESSIAN接口的代理对象,过所述性能监控线程执行所述HESSIAN接口的代理对象对应的方法。在HESSIAN接口的代理对象会注入原对象的方法,执行接口中的原始方法,通过代理拦截可以得到当前方法堆栈、执行时间和执行结果。当超时,或者有异常,需要写到***监控表中。这样每次执行的堆栈、语句、执行时间、参数、结果等就可以得到汇总,并写入一个队列中。
进一步地,在一实施例中所述步骤S200包括:通过所述HESSIAN接口的代理对象,获取所述HESSIAN接口对应的被执行的原始方法对应的执行参数,并将所述执行参数作为所述监控数据指标。
本实施例提出的性能监控方法,通过利用Java代理模式构建性能监控线程,利用该性能监控线程拦截监控对象的监控数据指标,从而达到全方位***监控,并且采用代理模式对监控对象进行监控,不需要更改现有的业务逻辑代码,实现性能监控线程的可插拔。
本发明进一步提供一种性能监控装置,参照图4,图4为本发明性能监控装置实施例的功能模块示意图。
构建模块10,用于在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程;
采集模块20,用于基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标,基于所述监控数据指标对所述对象进行性能监控。
进一步地,所述构建模块10还用于:
利用JAVA的JDBC接口,通过JAVA的代理模式生成所述数据库的代理对象;
通过所述性能监控线程执行所述数据库的代理对象对应的方法。
进一步地,所述构建模块10还用于:
通过JAVA的代理模式生成数据源代理对象,以对所述数据库的数据源进行代理;
通过所述代理数据源对象得到所述数据库链接代理对象,并代理所述数据库的预编译方法,得到预编译方法的代理对象。
进一步地,所述采集模块20还用于:
通过所述数据库链接代理对象、所述预编译方法的代理对象,获取所述数据库对应的被执行的数据库语句对应的执行参数,并将所述执行参数作为所述监控数据指标。
进一步地,所述构建模块10还用于:
通过JAVA的代理模式对所述HESSIAN接口进行代理,生成所述HESSIAN接口的代理对象;
通过所述性能监控线程执行所述HESSIAN接口的代理对象对应的方法。
进一步地,所述采集模块20还用于:
通过所述HESSIAN接口的代理对象,获取所述HESSIAN接口对应的被执行的原始方法对应的执行参数,并将所述执行参数作为所述监控数据指标。
此外,本发明实施例还提出一种可读存储介质,所述可读存储介质上存储有性能监控程序,所述性能监控程序被处理器执行时实现上述各个实施例中性能监控方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个可读存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台***设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种性能监控方法,其特征在于,所述性能监控方法包括:
在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程;
基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标,基于所述监控数据指标对所述对象进行性能监控。
2.如权利要求1所述的性能监控方法,其特征在于,所述性能监控指令对应的对象为数据库,所述在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程的步骤包括:
利用JAVA的JDBC接口,通过JAVA的代理模式生成所述数据库的代理对象;
通过所述性能监控线程执行所述数据库的代理对象对应的方法。
3.如权利要求2所述的性能监控方法,其特征在于,所述利用JAVA的JDBC接口,通过JAVA的代理模式生成所述数据库的代理对象的步骤包括:
通过JAVA的代理模式生成数据源代理对象,以对所述数据库的数据源进行代理;
通过所述代理数据源对象得到所述数据库链接代理对象,并代理所述数据库的预编译方法,得到预编译方法的代理对象。
4.如权利要求3所述的性能监控方法,其特征在于,所述基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标的步骤包括:
通过所述数据库链接代理对象、所述预编译方法的代理对象,获取所述数据库对应的被执行的数据库语句对应的执行参数,并将所述执行参数作为所述监控数据指标。
5.如权利要求1至4中任一项所述的性能监控方法,其特征在于,所述性能监控指令对应的对象为HESSIAN接口,所述在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程的步骤包括:
通过JAVA的代理模式对所述HESSIAN接口进行代理,生成所述HESSIAN接口的代理对象;
通过所述性能监控线程执行所述HESSIAN接口的代理对象对应的方法。
6.如权利要求5所述的性能监控方法,其特征在于,所述基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标的步骤包括:
通过所述HESSIAN接口的代理对象,获取所述HESSIAN接口对应的被执行的原始方法对应的执行参数,并将所述执行参数作为所述监控数据指标。
7.如权利要求1所述的性能监控方法,其特征在于,所述Java代理模式为JDK动态代理。
8.一种性能监控装置,其特征在于,所述性能监控装置包括:
构建模块,用于在接收到性能监控指令时,利用Java代理模式构建性能监控线程并启动所述性能监控线程;
采集模块,用于基于所述性能监控线程采集所述性能监控指令对应的对象的监控数据指标,基于所述监控数据指标对所述对象进行性能监控。
9.一种设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的性能监控程序,所述性能监控程序被所述处理器执行时实现如权利要求1至7中任一项所述的性能监控方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有所述性能监控程序,所述性能监控程序被处理器执行时实现如权利要求1至7中任一项所述的性能监控方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010699320.6A CN111813633A (zh) | 2020-07-20 | 2020-07-20 | 性能监控方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010699320.6A CN111813633A (zh) | 2020-07-20 | 2020-07-20 | 性能监控方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111813633A true CN111813633A (zh) | 2020-10-23 |
Family
ID=72866204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010699320.6A Pending CN111813633A (zh) | 2020-07-20 | 2020-07-20 | 性能监控方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111813633A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527620A (zh) * | 2020-12-24 | 2021-03-19 | 北京百度网讯科技有限公司 | 数据库性能分析方法及装置、电子设备、介质、产品 |
CN113900896A (zh) * | 2021-10-11 | 2022-01-07 | 北京博睿宏远数据科技股份有限公司 | 一种代码运行的监测方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110162A (zh) * | 2011-02-24 | 2011-06-29 | 北京中电普华信息技术有限公司 | 一种实现sql数据库监控的方法和装置 |
CN109542715A (zh) * | 2018-10-15 | 2019-03-29 | 北京达佳互联信息技术有限公司 | 采集应用程序性能数据的方法、装置及终端设备 |
CN111045891A (zh) * | 2019-12-11 | 2020-04-21 | 深圳前海环融联易信息科技服务有限公司 | 基于java多线程的监控方法、装置、设备以及存储介质 |
-
2020
- 2020-07-20 CN CN202010699320.6A patent/CN111813633A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110162A (zh) * | 2011-02-24 | 2011-06-29 | 北京中电普华信息技术有限公司 | 一种实现sql数据库监控的方法和装置 |
CN109542715A (zh) * | 2018-10-15 | 2019-03-29 | 北京达佳互联信息技术有限公司 | 采集应用程序性能数据的方法、装置及终端设备 |
CN111045891A (zh) * | 2019-12-11 | 2020-04-21 | 深圳前海环融联易信息科技服务有限公司 | 基于java多线程的监控方法、装置、设备以及存储介质 |
Non-Patent Citations (9)
Title |
---|
CSDN官方博客: "CSDN论坛规则", pages 1, Retrieved from the Internet <URL:《https://blog.csdn.net/blogdevteam/article/details/104260791》> * |
MISTRA丶: "Spring AOP之---基于JDK动态代理和CGLib动态代理的AOP实现", 《HTTPS://BLOG.CSDN.NET/AXELA30W/ARTICLE/DETAILS/79723415?》 * |
MISTRA丶: "Spring AOP之---基于JDK动态代理和CGLib动态代理的AOP实现", 《HTTPS://BLOG.CSDN.NET/AXELA30W/ARTICLE/DETAILS/79723415?》, 28 March 2018 (2018-03-28), pages 1 * |
PANDA_PARALLEL: "Java动态代理监控JDBC连接和执行SQL的脚本参数", 《HTTPS://BLOG.CSDN.NET/QQ_20003891/ARTICLE/DETAILS/86477665?》 * |
PANDA_PARALLEL: "Java动态代理监控JDBC连接和执行SQL的脚本参数", 《HTTPS://BLOG.CSDN.NET/QQ_20003891/ARTICLE/DETAILS/86477665?》, 28 March 2018 (2018-03-28), pages 1 * |
W3TECH: "***性能监控系列1:使用JAVA动态代理实现非侵入式的性能测量方", 《HTTPS://MP.WEIXIN.QQ.COM/S?__BIZ=MZAWNJMXNJQZNA==&MID=2651150548&IDX=1&SN=DB7098637690371ED315C770216F945C&SCENE=1&SRCID=0613LV1OPJHZ2KIH6RVJMCES#RD》 * |
W3TECH: "***性能监控系列1:使用JAVA动态代理实现非侵入式的性能测量方", 《HTTPS://MP.WEIXIN.QQ.COM/S?__BIZ=MZAWNJMXNJQZNA==&MID=2651150548&IDX=1&SN=DB7098637690371ED315C770216F945C&SCENE=1&SRCID=0613LV1OPJHZ2KIH6RVJMCES#RD》, 29 April 2016 (2016-04-29), pages 1 * |
程序猿架构: "Java动态代理的原生实现和Spring AOP的实现", 《HTTPS://BLOG.CSDN.NET/C315838651/ARTICLE/DETAILS/104025698?》 * |
程序猿架构: "Java动态代理的原生实现和Spring AOP的实现", 《HTTPS://BLOG.CSDN.NET/C315838651/ARTICLE/DETAILS/104025698?》, 17 January 2020 (2020-01-17), pages 1 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527620A (zh) * | 2020-12-24 | 2021-03-19 | 北京百度网讯科技有限公司 | 数据库性能分析方法及装置、电子设备、介质、产品 |
CN113900896A (zh) * | 2021-10-11 | 2022-01-07 | 北京博睿宏远数据科技股份有限公司 | 一种代码运行的监测方法、装置、设备及存储介质 |
CN113900896B (zh) * | 2021-10-11 | 2024-04-26 | 北京博睿宏远数据科技股份有限公司 | 一种代码运行的监测方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10360141B2 (en) | Automated application test system | |
US11244233B2 (en) | Intelligent adaptor service in unified automation platforms for robotic process automation | |
US5758351A (en) | System and method for the creation and use of surrogate information system objects | |
US8239839B2 (en) | Asynchrony debugging using web services interface | |
US8806437B2 (en) | Automated testing process | |
US8037103B2 (en) | Accessing a non-relational store with a container-managed persistence bean via a web service function | |
EP2990951A1 (en) | Structured query language debugger | |
US10642647B2 (en) | Concurrent queueing and control command feedback loop in unified automation platforms | |
US20140006459A1 (en) | Rule-based automated test data generation | |
WO2004109507A1 (en) | System and method for generator state object validation | |
CN109710220B (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
CN104679500B (zh) | 实体类自动生成实现方法及装置 | |
CN111813633A (zh) | 性能监控方法、装置、设备及可读存储介质 | |
EP2557496A1 (en) | Silent migration of business process binaries | |
CN113296758A (zh) | 一种前端组件库构建方法、装置及存储介质 | |
CN107122203B (zh) | 一种配置文件的设置方法及装置 | |
CN111736813A (zh) | Jpa代码的生成方法、装置、终端设备及存储介质 | |
US9208058B2 (en) | Providing directional debugging breakpoints | |
CN115309387A (zh) | 基于动态sql配置生成api接口的方法 | |
US20160170739A1 (en) | Alter application behaviour during runtime | |
CN113485927A (zh) | 一种测试数据生成方法、装置、设备及存储介质 | |
US10534588B2 (en) | Data processing simulator with simulator module and data elements | |
KR20140049824A (ko) | 원격 응용 프로그래밍 디버깅시스템 및 그 제어방법 | |
CN111459933A (zh) | Gdb数据动态扩展方法、装置及存储介质 | |
US11888937B2 (en) | Domain specific provider contracts for core data services |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201023 |