CN107957931A - 一种监测运行时间的方法及装置 - Google Patents
一种监测运行时间的方法及装置 Download PDFInfo
- Publication number
- CN107957931A CN107957931A CN201711183684.3A CN201711183684A CN107957931A CN 107957931 A CN107957931 A CN 107957931A CN 201711183684 A CN201711183684 A CN 201711183684A CN 107957931 A CN107957931 A CN 107957931A
- Authority
- CN
- China
- Prior art keywords
- function
- monitoring
- node
- access request
- run time
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种监测运行时间的方法及装置,生产系统接收到访问请求,会调用处理该访问请求的函数,当监测到对任意一个函数的调用时,调用预设的监控逻辑,该预设的监控逻辑会对该函数的运行时间进行监测,其中,该预设的监控逻辑是采用Aspectj框架中加载时织入(Load‑Time weaving)的技术编写的,采用Load‑Time weaving技术,可以不修改生产系统的源代码,在运行该生产系统的源代码时,仅利用Aspectj框架中的代理功能,调用预设的监控逻辑,监测运行时间即可,从而不用发布新的生产系统的版本,也不需要生产系统的研发人员配合,简单易行。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种监测运行时间的方法及装置。
背景技术
生产系统(Production System),是在正常情况下,支持企业日常业务运行的信息系统。在处理一个任务时,生产系统需要依次调用多个接口,利用该接口中的函数对该任务进行处理。
在处理该任务的过程中,若生产系统的接口性能差,会导致该接口处理任务时所需的运行时间长,降低生产系统处理该任务的效率。因此,需要监测各个接口处理任务的运行时间,对运行时间过长的接口进行性能优化。
目前,监测接口的运行时间时,获取该接口处理任务时,所记录的处理日志,对该处理日志进行分析,获得该接口的运行时间。但是,采用上述方法监测接口的运行时间时,需要对生产系统中的源代码进行侵入开发,添加监测运行时间的代码,实现方法繁琐。
发明内容
本发明解决的技术问题在于提供一种监测运行时间的方法及装置,从而无需在生产系统的代码中添加检测运行时间的代码,就能够实现监测处理访问请求时所调用的函数的运行时间。
为此,本发明解决技术问题的技术方案是:
一种监测运行时间的方法,所述方法包括:
接收访问请求;
监测到调用处理所述访问请求的函数时,调用预设的监控逻辑,所述预设的监控逻辑是采用Aspectj框架中加载时织入的技术编写的;
利用所述预设的监控逻辑,监测采用所述函数的运行时间。
可选的,利用所述预设的监控逻辑,监测采用所述函数的运行时间包括:
记录处理所述访问请求时所述函数的起始运行时刻;
获取处理所述访问请求时所述函数的结束运行时刻;
根据所述起始运行时刻和所述结束运行时刻,确定所述函数的处理所述访问请求的运行时间。
可选的,所述方法还包括:
生成对应于所述函数的日志节点,所述日志节点用于记录所述起始运行时刻,所述日志节点还用于记录所述结束运行时刻以及所述运行时间中的至少一种。
可选的,所述生成对应于所述函数的日志节点包括:
查找是否存在已创建的当前节点,所述当前节点对应于处理所述访问请求的已运行的函数;
当不存在已创建的当前节点时,生成对应于所述函数的第一节点,将所述第一节点作为监控树中的根节点,并将所述第一节点作为当前节点;
当存在已创建的当前节点时,生成对应于所述函数的第二节点,将所述第二节点作为所述监控树中所述当前节点的子节点,并利用所述第二节点替换所述当前节点,所述函数是所述已运行的函数的子函数。
可选的,所述方法还包括:
获取所述函数的日志节点确定所述函数的运行时间;
当所述函数的运行时间超过预设的运行时间阈值时,生成所述函数的报警信息。
可选的,所述方法还包括:
分析所述访问请求是否携带有监测标识,所述监测标识用于指示监测运行时间;
当所述访问请求携带有监测标识时,执行监测到调用处理所述访问请求的函数时,调用预设的监控逻辑。
可选的,
当所述访问请求携带有监测标识时,所述监测标识位于所述访问请求的URL中。
一种监测运行时间的装置,所述装置包括:
接收模块,用于接收访问请求;
调用模块,用于监测到调用处理所述访问请求的函数时,调用预设的监控逻辑,所述预设的监控逻辑是采用Aspectj框架中加载时织入的技术编写的;
监测模块,用于利用所述预设的监控逻辑,监测采用所述函数的运行时间。
可选的,所述监测模块包括:
记录单元,用于记录处理所述访问请求时所述函数的起始运行时刻;
获取单元,用于获取处理所述访问请求时所述函数的结束运行时刻;
确定单元,用于根据所述起始运行时刻和所述结束运行时刻,确定所述函数的处理所述访问请求的运行时间。
可选的,所述监测模块还包括:
生成单元,用于生成对应于所述函数的日志节点,所述日志节点用于记录所述起始运行时刻,所述日志节点还用于记录所述结束运行时刻以及所述运行时间中的至少一种。
可选的,所述生成单元包括:
查找子单元,用于查找是否存在已创建的当前节点,所述当前节点对应于处理所述访问请求的一个已运行的函数;
第一生成子单元,用于当不存在已创建的当前节点时,生成对应于所述函数的第一节点,将所述第一节点作为监控树中的根节点,并将所述第一节点作为当前节点;
第二生成子单元,用于当存在已创建的当前节点时,生成对应于所述函数的第二节点,将所述第二节点作为所述监控树中所述当前节点的子节点,并利用所述第二节点替换所述当前节点,所述函数是所述已运行的函数的子函数。
可选的,所述装置还包括:
获取模块,用于获取所述函数的日志节点确定所述函数的运行时间;
报警模块,用于当所述函数的运行时间超过预设的运行时间阈值时,生成所述函数的报警信息。
可选的,所述装置还包括:
分析模块,用于分析所述访问请求是否携带有监测标识,所述监测标识用于指示监测运行时间,当所述访问请求携带有监测标识时,跳转至调用模块。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述内容所述的监测运行时间的方法的步骤。
一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述内容所述的监测运行时间的方法的步骤。
通过上述技术方案可知,本发明有如下有益效果:
生产系统接收到访问请求,会调用处理该访问请求的函数,当监测到对任意一个函数的调用时,调用预设的监控逻辑,该预设的监控逻辑会对该函数的运行时间进行监测,其中,该预设的监控逻辑是采用Aspectj框架中加载时织入(Load-Time weaving)的技术编写的,采用Load-Time weaving技术,可以不修改生产系统的源代码,在运行该生产系统的源代码时,仅利用Aspectj框架中的代理功能,调用预设的监控逻辑,监测运行时间即可,从而不用发布新的生产系统的版本,也不需要生产系统的研发人员配合,简单易行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的监测运行时间的方法一实例流程图;
图2为本发明实施例提供的添加监测标识的示意图;
图3为本发明实施例提供的监测运行时间的方法另一实例流程图;
图4为本发明实施例提供的创建的监控树示意图;
图5为本发明实施例提供的监测运行时间的装置结构示意图。
具体实施方式
为了给出监测所调用的函数处理访问请求的运行时间的实现方案,本发明实施例提供了一种监测运行时间的方法及装置,以下结合说明书附图对本发明的实施例进行说明,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
生产系统的处理性能差,会导致处理访问请求所需的运行时间长,影响该生产系统对访问请求响应的速度,减低用户体验。因此,需要监测生产系统处理访问请求时所需的运行时间。目前,常用的方式是在生产系统的源代码中,添加监测运行时间的代码。若需要监测多个被调用的函数的运行时间,需要在每个被调用的函数中,都添加监测运行时间的代码。一方面,需要对生产系统的源代码进行侵入式开发,需要开发人员的配合,还需要发布修改后的生产系统的新版本,实现过程复杂;另一方面,若需要监测多个函数的运行时间时,需要在每个函数中,都添加相同的监测运行时间的代码,工作内容重复,效率低。
为了解决上述问题,本发明提供了监测运行时间的技术方案,生产系统接收到访问请求,会调用处理该访问请求的函数,当监测到对任意一个函数的调用时,调用预设的监控逻辑,该预设的监控逻辑会对该函数的运行时间进行监测,其中,该预设的监控逻辑是采用Aspectj框架中加载时织入(Load-Time weaving)的技术编写的,采用Load-Timeweaving技术,一方面,可以不修改生产系统的源代码,在运行该生产系统的源代码时,仅利用Aspectj框架中的代理功能,调用预设的监控逻辑,监测运行时间即可,从而不用发布新的生产系统的版本,也不需要生产系统的研发人员配合,简单易行;另一方面,在对多个函数的运行时间进行监测时,仅需要在调用该函数时,同时调用预设的监控逻辑进行监测即可,无需重复添加监测代码,减少工作内容,提高效率。
下面对本发明提供的实施例进行详细描述。
方法性实例
图1为本发明实施例提供的监测运行时间的方法流程图,包括:
101:接收访问请求。
102:监测到调用处理访问请求的函数时,调用预设的监控逻辑,预设的监控逻辑是采用Aspectj框架中加载时织入的技术编写的。
103:利用预设的监控逻辑,监测采用函数的运行时间。
生产系统接收到一个访问请求时,会调用相应的函数对该访问请求进行处理。本发明的生产系统,采用Java进行开发,可以在该生产系统中,设置Java代理,Java代理监测到生产系统调用一个函数处理该访问请求时,即调用预设的监控逻辑,运行该预设的监控逻辑,监控该函数的运行时间。
Java代理是生产系统的一个属性,通常情况下,可以选择使用Java代理,也可以选择不适用Java代理。本发明的实现方案中,需要使用Java代理,则对Java代理进行属性设置,设置后,一旦Java代理监测到调用一个函数,即会调用预设的监控逻辑,监测函数的运行时间。
预设的监控逻辑,是能够实现运行时间监控的预先编写的程序代码。该预设的监控逻辑,是采用Aspectj框架中加载时织入(Load-Time weaving)的技术编写的。Aspectj框架提供了多种功能,其中一种功能是Load-Time weaving功能,采用AOP(Aspect OrientedProgramming,面向切面编程)语法进行编写。采用Load-Time weaving编写的预设的监控逻辑,可以在不修改生产系统的源代码,也不影响生产系统运行环境的情况下,监测所调用的函数的运行时间。
在一个实例中,利用预设的监控逻辑监测采用函数的运行时间,包括:
记录处理访问请求时函数的起始运行时刻;
记录处理访问请求时函数的结束运行时刻;
根据起始运行时刻和结束运行时刻,获得函数的处理访问请求的运行时间。
预设的监控逻辑监控一个函数的运行时间,在该函数被调用时,即记录该函数的起始运行时刻,然后监测该函数的运行,当监测到该函数运行结束时,记录该函数的结束运行时刻。一般情况下,起始运行时刻和结束运行时刻,指的是系统时刻。可以理解的是,计算结束运行时刻与起始运行时刻的差,即能够获得该函数的运行时间。
这样,不用发布新的生产系统的版本,也不需要生产系统的研发人员配合,简单易行。
现有技术中,还存在一种监测运行时间的方法,即对处理访问请求时所记录的处理日志进行分析,处理日志记录有处理该访问请求时,执行各个操作时所产生的操作信息,该操作信息中包括执行操作起始时刻。
但是,技术人员发现采用上述方法存在如下问题:
第一,处理一个访问请求的过程中,会生成大量的处理日志,对于调用一个函数处理该访问请求时,也会生成多个处理日志,需要分析的处理日志数量大;
第二,处理日志主要用于记录操作信息,并不是专门用来记录运行时间,该处理日志中不一定记录有该操作的起始时刻和结束时刻,记录内容不完整;
第三,一个函数的处理过程中,会生成多个处理日志,需要找到该函数运行时,所生成的第一个处理日志,并且,还需要找到该函数运行时,所生成的最后一个处理日志,根据上述两个处理日志中记录的内容,分析该函数的运行时间,该处理日志并不能精确反映函数的运行时间,只能得到大概的运行时间,精确度低。
而本发明提供的方案中,生产系统调用多个函数处理一个访问请求时,生产系统中的Java代理每次监测到调用一个函数,即调用预设的监控逻辑监测该函数的运行时间,该预设的监控逻辑的作用,即为监测函数的运行时间,能够单独监测每个函数精确的运行时间,准确度高;也无需对处理日志进行分析,也不需要在生产系统中重复的添加监测运行时间的代码,效率高。
生产系统所接收的访问请求数量庞大,而分析该生产系统的性能时,不需要监测大量的访问请求。此时,可以在访问请求中添加监测标识。所述方法还包括:
分析所述访问请求是否携带有监测标识,所述监测标识用于指示监测运行时间;
当访问请求携带有监测标识时,执行监测到调用处理访问请求的函数时,调用预设的监控逻辑。
接收到一个请求时,若该请求是Http Servlet类的请求,则表示该请求是一个访问请求。分析该访问请求中是否携带有监测标识,若携带该访问请求中携带有监测标识,则表示需要监测处理该访问请求的函数的运行时间;若该访问请求中没有携带监测标识,则表示不需要监测处理该访问请求的函数的运行时间。
具体实现时,该监测标识位于访问请求的URL(Uniform Resource Locator,统一资源定位符)中。该监测标识是由技术人员预先设置的。技术人员想要测试生产系统的性能时,通过浏览器发送一个访问请求,并在该访问请求的URL后添加该预先设置的监测标识,实现对处理该访问请求的函数的运行时间的监测,根据监测到的运行时间,分析生产系统的性能。
举例说明:如图2所示,监测标识为“tk-performance-monitor=1”,技术人员在发送用于测试的访问请求时,在该访问请求的URL后面添加“tk-performance-monitor=1”。生产系统接收到该访问请求,监测到该访问请求携带有“tk-performance-monitor=1”,则监测处理该访问请求的函数的运行时间。
仅对携带有监测标识的访问请求进行监控,无需对所有接收到的访问请求都进行监控,实现按需监控,减小生产系统的运行负担。
上面对本发明提供的检测运行时间的方法进行了详细描述,具体实现时,可以采用树形结构,记录处理一个访问请求,所调用的各个函数的运行时间,如图3所示,包括:
301:接收访问请求。
302:监测到调用处理访问请求的函数时,调用预设的监控逻辑,预设的监控逻辑是采用Aspectj框架中加载时织入的技术编写的。
301和302的实现方式,与图1中101和102的实现方式类似,参考图1所示的方法的描述,这里不再赘述。
303:生成对应于该函数的日志节点。
304:在该日志节点中记录处理该访问请求时该函数的起始运行时刻。
305:获取处理访问请求时该函数的结束运行时刻。
306:根据所述起始运行时刻和所述结束运行时刻,确定所述函数的处理所述访问请求的运行时间,将该运行时间记录在该日志节点中。
接收到一个访问请求时,给该访问请求创建一个监控文档,在处理该访问请求时,每调用一个函数,预设的监控逻辑都会在该监控文档中,生成一个对应于该函数的日志节点。
一种场景下,一个函数对应于一个日志节点,该日志节点中记录有该函数的起始运行时刻,该日志节点中还记录有该函数的结束运行时刻,以及运行时间中的至少一种。
可以理解的是,该日志节点必须记录有起始运行时刻,否则该函数运行结束时,无法确定该函数的运行时间。该日志节点可以记录有起始运行时刻和结束运行时刻,可以计算结束运行时刻和起始运行时刻的差值,获得运行时间。该日志节点也可以直接记录有起始运行时刻和运行时间,该运行时间由预设的监控逻辑在获取结束运行时刻时计算得到,但是,该结束运行时刻并不记录在该日志节点中。
从而,对生产系统进行分析时,可以直接找到各个函数对应的日志节点,获知该函数的运行时间,该运行时间是在函数运行过程中记录的,是该函数的精确的运行时间;并且,一个函数对应于一个日志节点,查找该函数的运行时间时,查找该函数对应的日志节点即可,无需查阅大量的处理日志,操作简单,节省时间。
另一种场景下,监控文档中各个函数对应的日志节点组成树形结构,获得监控树。监控树中各个日志节点之间从属的关系,能够体现日志节点对应的函数之间的从属关系。
具体实现时,生成对应于函数的日志节点包括:
查找是否存在已创建的当前节点,当前节点对应于处理访问请求的已运行的函数;
当不存在已创建的当前节点时,生成对应于函数的第一节点,将第一节点作为监控树中的根节点,并将第一节点作为当前节点;
当存在已创建的当前节点时,生成对应于函数的第二节点,将第二节点作为监控树中当前节点的子节点,并利用第二节点替换当前节点,函数是已运行的函数的子函数。
在处理访问请求时,调用一个函数,查找该访问请求的监控文档中,是否存在已创建的当前节点。若不存在已创建的当前节点,则表示该函数是处理该访问请求所调用的第一个函数,则生成一个对应于该函数的第一节点,第一节点即为根节点。
若存在已创建的当前节点,则表示该函数不是处理该访问请求所调用的第一个函数,则生成一个对应于该函数的第二节点。在处理该访问请求的过程中,该函数是当前节点对应的函数的子函数,也就是说,第二节点是已创建的当前节点的子节点。创建了第二节点后,利用第二节点替换当前节点,即第二节点成为当前节点,记录该函数的起始运行时刻。
这里需要说明的是,函数和该函数的子函数,是相对概念,能够表示函数被调用的先后关系。而监控文档中各个日志节点的连接关系,也能改表示日志节点对应的函数被调用的先后关系。可以理解的是,第一个被调用的函数,对应于监控树的根节点,该日志节点只有子节点没有父节点;最后一个被调用的函数,对应于监控树的叶子节点,该日志节点只有父节点没有子节点。
为了对本发明的方案进行更好的说明,下面列举一个实例进行具体描述。
场景实例:创建的监控树如图4所示,日志节点A1对应于函数B1,日志节点A2对应于函数B2,日志节点A3对应于函数B3,日志节点A4对应于函数B4,日志节点A5对应于函数B5。
监控树的创建过程如下:
函数B1是被调用的第一个函数,调用函数B1时,监控文档中不存在已创建的当前节点,则给函数B1生成一个日志节点A1,将日志节点A1作为当前节点,日志节点A1为根节点,日志节点A1记录函数B1的运行时间。
函数B1运行完毕以后,调用函数B2,函数B2是函数B1的子函数,给函数B2生成一个日志节点A2,已创建的当前节点是日志节点A1,日志节点A2作为日志节点A1的子节点,日志节点A2替换日志节点A1作为当前节点。
函数B2运行完毕以后,调用函数B3,函数B3是函数B2的子函数,给函数B3生成一个日志节点A3,已创建的当前节点是日志节点A2,日志节点A3作为日志节点A2的子节点,日志节点A3替换日志节点A2作为当前节点。
函数B3运行完毕后,并不能直接调用函数B4,会返回函数B2,再调用函数B4,函数B3和函数B4都是函数B2的子函数,同理,当前节点由日志节点A3转换成日志节点A2,给函数B4生成一个日志节点A4,已创建的当前节点是日志节点A2,日志节点A4作为日志节点A2的子节点,日志节点A4替换日志节点A2作为当前节点。
函数B4运行完毕后,调用函数B5,函数B5是函数B4的子函数,给函数B5生成一个日志节点A5,已创建的当前节点是日志节点A4,日志节点A5作为日志节点A4的子节点,日志节点A5替换日志节点A4作为当前节点。
这里需要说明的是,上述实例仅是为了对本发明提供的技术方案进行更好的说明,并不仅限于上述实例的描述,这里不再赘述。
在一个实例中,一个函数对应的日志节点,可以采用该函数的函数名称作为该日志节点的标识。
在另一个实例中,每个函数对应的日志节点,还可以记录该函数的函数名称。
将给各个函数生成的日志节点,采用监控树的形式进行记录,还能够直观的展现处理访问请求时,所调用的各个函数被调用的先后顺序,不仅能够获知各个函数的精确的运行时间,还能准确获知各个函数之间的调用关系,为分析生产系统的性能提供更多的依据。
在一个例子中,该方法还包括:
获取所述函数的日志节点确定所述函数的运行时间;
当所述函数的运行时间超过预设的运行时间阈值时,生成所述函数的报警信息。
一个访问请求处理结束后,能够获得一个处理该访问请求所创建的监控树。监控树上每一个日志节点对应于一个处理该访问请求时所调用的函数。一个日志节点,可以记录有该日志节点对应的函数的起始运行时间和结束运行时间,从而,起始运行时间和结束运行时间的时间差则为该函数的运行时间。或者,一个日志节点,可以直接记录该日志节点对应的函数的运行时间。对于一个函数来说,根据该函数对应的日志节点确定该函数的运行时间,将该函数的运行时间与预设的运行时间阈值进行比较,若函数的运行时间超过预设的运行时间阈值时,表示该函数的运行有误,生成一个该函数的报警信息,提示工作人员,该函数运行有误。
根据一个函数在所处案件的监控树上对应的日志节点,提供了更快速的更直观的获得该函数的运行时间的方式。
综上所述,本发明提供的监测运行时间的方法,生产系统接收到访问请求,会调用处理该访问请求的函数,当监测到对任意一个函数的调用时,调用预设的监控逻辑,该预设的监控逻辑会对该函数的运行时间进行监测,其中,该预设的监控逻辑是采用Aspectj框架中加载时织入(Load-Time weaving)的技术编写的,采用Load-Time weaving技术,可以不修改生产系统的源代码,在运行该生产系统的源代码时,仅利用Aspectj框架中的代理功能,调用预设的监控逻辑,监测运行时间即可,从而不用发布新的生产系统的版本,也不需要生产系统的研发人员配合,简单易行。
装置性实例
图5为本发明实施例提供的监测运行时间的装置,包括:
接收模块501,用于接收访问请求。
调用模块502,用于监测到调用处理所述访问请求的函数时,调用预设的监控逻辑,所述预设的监控逻辑是采用Aspectj框架中加载时织入的技术编写的。
监测模块503,用于利用所述预设的监控逻辑,监测采用所述函数的运行时间。
可选的,所述监测模块包括:
记录单元,用于记录处理所述访问请求时所述函数的起始运行时刻;
获取单元,用于获取处理所述访问请求时所述函数的结束运行时刻;
确定单元,用于根据所述起始运行时刻和所述结束运行时刻,确定所述函数的处理所述访问请求的运行时间。
可选的,所述监测模块还包括:
生成单元,用于生成对应于所述函数的日志节点,所述日志节点用于记录所述起始运行时刻,所述日志节点还用于记录所述结束运行时刻以及所述运行时间中的至少一种。
可选的,所述生成单元包括:
查找子单元,用于查找是否存在已创建的当前节点,所述当前节点对应于处理所述访问请求的一个已运行的函数;
第一生成子单元,用于当不存在已创建的当前节点时,生成对应于所述函数的第一节点,将所述第一节点作为监控树中的根节点,并将所述第一节点作为当前节点;
第二生成子单元,用于当存在已创建的当前节点时,生成对应于所述函数的第二节点,将所述第二节点作为所述监控树中所述当前节点的子节点,并利用所述第二节点替换所述当前节点,所述函数是所述已运行的函数的子函数。
可选的,所述装置还包括:
获取模块,用于获取所述函数的日志节点确定所述函数的运行时间;
报警模块,用于当所述函数的运行时间超过预设的运行时间阈值时,生成所述函数的报警信息。
可选的,所述装置还包括:
分析模块,用于分析所述访问请求是否携带有监测标识,所述监测标识用于指示监测运行时间,当所述访问请求携带有监测标识时,跳转至调用模块。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现方法性实例所述的监测运行时间的方法的步骤。
一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行方法性实例所述的监测运行时间的方法的步骤。
生产系统接收到访问请求,会调用处理该访问请求的函数,当监测到对任意一个函数的调用时,调用预设的监控逻辑,该预设的监控逻辑会对该函数的运行时间进行监测,其中,该预设的监控逻辑是采用Aspectj框架中加载时织入(Load-Time weaving)的技术编写的,采用Load-Time weaving技术,可以不修改生产系统的源代码,在运行该生产系统的源代码时,仅利用Aspectj框架中的代理功能,调用预设的监控逻辑,监测运行时间即可,从而不用发布新的生产系统的版本,也不需要生产系统的研发人员配合,简单易行。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种监测运行时间的方法,其特征在于,所述方法包括:
接收访问请求;
监测到调用处理所述访问请求的函数时,调用预设的监控逻辑,所述预设的监控逻辑是采用Aspectj框架中加载时织入的技术编写的;
利用所述预设的监控逻辑,监测采用所述函数的运行时间。
2.根据权利要求1所述的方法,其特征在于,利用所述预设的监控逻辑,监测采用所述函数的运行时间包括:
记录处理所述访问请求时所述函数的起始运行时刻;
获取处理所述访问请求时所述函数的结束运行时刻;
根据所述起始运行时刻和所述结束运行时刻,确定所述函数的处理所述访问请求的运行时间。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
生成对应于所述函数的日志节点,所述日志节点用于记录所述起始运行时刻,所述日志节点还用于记录所述结束运行时刻以及所述运行时间中的至少一种。
4.根据权利要求3所述的方法,其特征在于,所述生成对应于所述函数的日志节点包括:
查找是否存在已创建的当前节点,所述当前节点对应于处理所述访问请求的已运行的函数;
当不存在已创建的当前节点时,生成对应于所述函数的第一节点,将所述第一节点作为监控树中的根节点,并将所述第一节点作为当前节点;
当存在已创建的当前节点时,生成对应于所述函数的第二节点,将所述第二节点作为所述监控树中所述当前节点的子节点,并利用所述第二节点替换所述当前节点,所述函数是所述已运行的函数的子函数。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
获取所述函数的日志节点确定所述函数的运行时间;
当所述函数的运行时间超过预设的运行时间阈值时,生成所述函数的报警信息。
6.根据权利要求1-5任意一项所述的方法,其特征在于,所述方法还包括:
分析所述访问请求是否携带有监测标识,所述监测标识用于指示监测运行时间;
当所述访问请求携带有监测标识时,执行监测到调用处理所述访问请求的函数时,调用预设的监控逻辑。
7.根据权利要求6所述的方法,其特征在于,
当所述访问请求携带有监测标识时,所述监测标识位于所述访问请求的URL中。
8.一种监测运行时间的装置,其特征在于,所述装置包括:
接收模块,用于接收访问请求;
调用模块,用于监测到调用处理所述访问请求的函数时,调用预设的监控逻辑,所述预设的监控逻辑是采用Aspectj框架中加载时织入的技术编写的;
监测模块,用于利用所述预设的监控逻辑,监测采用所述函数的运行时间。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1~7任一项所述的监测运行时间的方法的步骤。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~7任一项所述的监测运行时间的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711183684.3A CN107957931A (zh) | 2017-11-23 | 2017-11-23 | 一种监测运行时间的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711183684.3A CN107957931A (zh) | 2017-11-23 | 2017-11-23 | 一种监测运行时间的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107957931A true CN107957931A (zh) | 2018-04-24 |
Family
ID=61961776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711183684.3A Pending CN107957931A (zh) | 2017-11-23 | 2017-11-23 | 一种监测运行时间的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107957931A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271294A (zh) * | 2018-09-18 | 2019-01-25 | 安徽华博胜讯信息科技股份有限公司 | 基于公共文化服务的一站式应用监控预警系统 |
CN110457196A (zh) * | 2019-08-16 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 函数执行时间的获取方法及装置 |
CN113900896A (zh) * | 2021-10-11 | 2022-01-07 | 北京博睿宏远数据科技股份有限公司 | 一种代码运行的监测方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060020866A1 (en) * | 2004-06-15 | 2006-01-26 | K5 Systems Inc. | System and method for monitoring performance of network infrastructure and applications by automatically identifying system variables or components constructed from such variables that dominate variance of performance |
CN103176892A (zh) * | 2011-12-20 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 一种页面监控方法及系统 |
CN103714290A (zh) * | 2013-12-26 | 2014-04-09 | 北京工业大学 | 一种软件行为获取、监控与验证方法 |
CN104346148A (zh) * | 2013-07-30 | 2015-02-11 | 阿里巴巴集团控股有限公司 | 获取程序性能消耗信息的方法、装置及系统 |
CN106055462A (zh) * | 2016-05-20 | 2016-10-26 | 腾讯科技(深圳)有限公司 | 一种时长获取方法和装置 |
-
2017
- 2017-11-23 CN CN201711183684.3A patent/CN107957931A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060020866A1 (en) * | 2004-06-15 | 2006-01-26 | K5 Systems Inc. | System and method for monitoring performance of network infrastructure and applications by automatically identifying system variables or components constructed from such variables that dominate variance of performance |
CN103176892A (zh) * | 2011-12-20 | 2013-06-26 | 阿里巴巴集团控股有限公司 | 一种页面监控方法及系统 |
CN104346148A (zh) * | 2013-07-30 | 2015-02-11 | 阿里巴巴集团控股有限公司 | 获取程序性能消耗信息的方法、装置及系统 |
CN103714290A (zh) * | 2013-12-26 | 2014-04-09 | 北京工业大学 | 一种软件行为获取、监控与验证方法 |
CN106055462A (zh) * | 2016-05-20 | 2016-10-26 | 腾讯科技(深圳)有限公司 | 一种时长获取方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271294A (zh) * | 2018-09-18 | 2019-01-25 | 安徽华博胜讯信息科技股份有限公司 | 基于公共文化服务的一站式应用监控预警系统 |
CN110457196A (zh) * | 2019-08-16 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 函数执行时间的获取方法及装置 |
CN110457196B (zh) * | 2019-08-16 | 2023-10-24 | 腾讯科技(深圳)有限公司 | 函数执行时间的获取方法及装置 |
CN113900896A (zh) * | 2021-10-11 | 2022-01-07 | 北京博睿宏远数据科技股份有限公司 | 一种代码运行的监测方法、装置、设备及存储介质 |
CN113900896B (zh) * | 2021-10-11 | 2024-04-26 | 北京博睿宏远数据科技股份有限公司 | 一种代码运行的监测方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110516971B (zh) | 异常检测的方法、装置、介质和计算设备 | |
US8078691B2 (en) | Web page load time prediction and simulation | |
US8943196B2 (en) | Programmatically determining an execution mode for a request dispatch utilizing historic metrics | |
US8789014B2 (en) | Managing a working set in an integrated development environment | |
US8904243B2 (en) | Event management systems and methods | |
CN110908641B (zh) | 基于可视化的流计算平台、方法、设备和存储介质 | |
CN105335472B (zh) | 一种更新数据查询引擎配置列表的方法及装置 | |
WO2014204996A1 (en) | Monitoring mobile application performance | |
CN106126410B (zh) | 代码冲突的提示方法及装置 | |
CN107957931A (zh) | 一种监测运行时间的方法及装置 | |
US11394604B2 (en) | Closed-loop automation of a managed network | |
US10084637B2 (en) | Automatic task tracking | |
CN110502366B (zh) | 案例执行方法、装置、设备及计算机可读存储介质 | |
JP2015219890A (ja) | 管理装置、その制御方法およびプログラム | |
CN111666217A (zh) | 用于测试代码的方法和装置 | |
JP2007316905A (ja) | アプリケーションプログラムを監視する計算機システム及びその方法 | |
CN110147327B (zh) | 一种基于多粒度的web自动化测试管理方法 | |
CN111309609A (zh) | 软件处理系统 | |
US20180143897A1 (en) | Determining idle testing periods | |
CN109409948B (zh) | 交易异常检测方法、装置、设备及计算机可读存储介质 | |
CN114218052B (zh) | 一种业务交互图生成方法、装置、设备及存储介质 | |
JP2012160013A (ja) | データ分析及び機械学習処理装置及び方法及びプログラム | |
US8261203B2 (en) | Flexible system monitoring using SNMP | |
JP2015517161A (ja) | コンテンツに基づくウェブ拡張およびコンテンツのリンク | |
CN117909180A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180424 |
|
RJ01 | Rejection of invention patent application after publication |