CN112148574A - 一种性能数据采集方法、计算机设备及存储介质 - Google Patents
一种性能数据采集方法、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112148574A CN112148574A CN202010994696.XA CN202010994696A CN112148574A CN 112148574 A CN112148574 A CN 112148574A CN 202010994696 A CN202010994696 A CN 202010994696A CN 112148574 A CN112148574 A CN 112148574A
- Authority
- CN
- China
- Prior art keywords
- transaction
- sub
- performance data
- performance
- point function
- 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
Links
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/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
-
- 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/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种性能数据采集方法、计算机设备及存储介质,其中性能数据采集方法包括:埋点函数确定事务的ID并采集事务的性能数据,并将事务的ID和事务的性能数据发送给性能管理进程;性能管理进程接收并记录事务的ID和事务的性能数据。本申请实施例提供的该方法,由于埋点操作向性能管理进程发送事务的ID和性能数据,所以对于埋点错误的情况,也不会产生内存泄漏;并且,CPU资源占用相对下降,对应用程序的影响减少,事务性能测量更准确;进一步的,通过性能管理进程接收和记录事务的ID和性能数据,能够实现多进程协作类型的应用程序的性能管理。
Description
技术领域
本申请涉及应用程序性能管理(Application Performance Management,简称为APM)技术领域,尤其涉及一种性能数据采集方法、计算机设备及存储介质。
背景技术
相关技术中,在C/C++语言中,APM领域各家公司都是提供SDK(SoftwareDevelopment Kit),由APP开发者调用SDK函数手动埋点的方法来达到性能监控目的。
手动埋点(以下简称埋点),是指App程序在适当位置调用SDK函数。SDK程序通过测量埋点位置之间的时间间隔捕获事务的执行性能。一般地,事务是指一次服务请求的响应处理过程;事务子过程(以下简称为子过程),是指事务的处理过程中,按不同子功能区分的执行过程。子过程常见分类:外部调用子过程,数据库子过程,NoSQL子过程,MQ子过程,计算子过程等。
相关技术中的一种C/C++语言中APM实现方案,事务的性能采集过程包括:1)在事务开始时,通过埋点方法捕获,创建一个记录事务执行数据的对象;2)(可选)在事务执行过程中通过埋点抓取相关参数,记录到事务数据对象;3)在事务的执行过程中,通过埋点方法,在有子过程开始时,创建一个记录子过程执行数据的对象;4)(可选)子过程执行中,通过埋点方法,捕获子过程执行的关键参数,记录到子过程执行数据对象;5)通过埋点方法,在子过程执行结束时,得到子过程的执行性能,记录到子过程执行数据对象;6)通过埋点方法捕获事务事件,得到事务的执行性能。
然而,当某些APP使用异常机制或者由于开发者的疏忽,导致在事务真正结束时,没有埋点函数结束事务内存对象,这种情况下,会导致SDK的内存泄漏,最终APP因此而崩溃。
并且,由于该技术方案采用内存对象记录事务的性能数据,事务的定义和追踪是在进程范围内的。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种性能数据采集方法、计算机设备及存储介质。
第一方面,本申请提供了一种性能数据采集方法,包括:埋点函数确定事务的ID并采集事务的性能数据,并将事务的ID和事务的性能数据发送给性能管理进程;性能管理进程接收并记录事务的ID和事务的性能数据。
在某些实施例中,上述性能数据采集方法还包括:埋点函数将事务的ID返回给应用程序,以使应用程序以事务的ID为参数调用埋点函数。
在某些实施例中,埋点函数确定事务的ID并采集事务的性能数据,并将事务的ID和事务的性能数据发送给性能管理进程,包括:在事务开始时,第一埋点函数确定事务的ID和生成事务开始时间戳,并将事务的ID、事务开始时间戳发送给性能管理进程;在事务结束时,第二埋点函数生成事务结束时间戳,并将事务的ID和事务结束时间戳发送给性能管理进程,其中,第二埋点函数是以事务的ID为参数被调用的。
在某些实施例中,埋点函数确定事务的ID并采集事务的性能数据,并将事务的ID和事务的性能数据发送给性能管理进程,还包括:第三埋点函数确定事务的子过程的ID并采集子过程的性能数据,并将子过程的ID、事务的ID和子过程的性能数据发送给性能管理进程,其中,第三埋点函数是以事务的ID为参数被调用的。
在某些实施例中,第三埋点函数确定事务的子过程的ID并采集子过程的性能数据,并将子过程的ID、事务的ID和子过程的性能数据发送给性能管理进程,包括:在子过程开始时,第四埋点函数确定子过程的ID和生成子过程开始时间戳,并将子过程的ID、事务的ID、子过程开始时间戳发送给性能管理进程,其中,第四埋点函数是以事务的ID为参数被调用的;在子过程结束时,第五埋点函数生成子过程结束时间戳,并将子过程的ID和子过程结束时间戳发送给性能管理进程,其中,第五埋点函数是以子过程的ID为参数被调用的。
在某些实施例中,埋点函数确定事务的ID并采集事务的性能数据,并将事务的ID和事务的性能数据发送给性能管理进程,还包括:在事务执行过程中,第六埋点函数将事务的ID和事务的执行参数发送给性能管理进程,其中,事务的执行参数是第六埋点函数采集的和/或作为参数传递给第六埋点函数的。
在某些实施例中,第三埋点函数确定事务的子过程的ID并采集子过程的性能数据,并将子过程的ID、事务的ID和子过程的性能数据发送给性能管理进程,还包括:在子过程执行过程中,第七埋点函数将子过程的ID和子过程的执行参数发送给性能管理进程,其中,子过程的执行参数是第七埋点函数采集的和/或作为参数传递给第七埋点函数的。
在某些实施例中,在事务开始时,第一埋点函数确定事务的ID和生成事务开始时间戳,并将事务的ID和事务开始时间戳发送给性能管理进程,还包括:第一埋点函数采集第一预设参数,并将第一预定参数发送给性能管理进程,其中,该第一预设参数与性能分析相关。
在某些实施例中,在子过程开始时,第四埋点函数确定子过程的ID和生成子过程开始时间戳,并将子过程的ID、事务的ID和子过程开始时间戳发送给性能管理进程,还包括:第四埋点函数采集第二预设参数,并将第二预定参数发送给性能管理进程,其中,该第二预设参数与性能分析相关。
在某些实施例中,性能管理进程为独立于应用程序的进程。
第二方面,本申请提供了一种计算机设备,该计算机设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序;计算机程序被处理器执行时实现性能数据采集方法的步骤。
第三方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质上存储有性能数据采集程序,性能数据采集程序被处理器执行时实现性能数据采集方法的步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例提供的该方法,由于埋点操作向性能管理进程发送事务的ID和性能数据,所以对于埋点错误的情况,也不会产生内存泄漏;并且,CPU资源占用相对下降,对应用程序的影响减少,事务性能测量更准确;进一步的,通过性能管理进程接收和记录事务的ID和性能数据,能够实现多进程协作类型的应用程序的性能管理。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的性能数据采集系统一个示例的示意图;
图2为本申请实施例提供的性能数据采集方法一个示例的流程图;
图3为本申请实施例提供的性能数据采集方法另一个示例的流程图;
图4为本申请实施例提供的性能数据采集方法的多进程事务性能数据采集示例的流程图;
图5为本申请实施例提供的计算机设备一种实施方式的硬件示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本申请的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
图1为本申请实施例提供的性能数据采集系统一个示例的示意图,如图1所示,性能数据采集系统包括:性能管理装置110和应用程序120,性能管理装置110以SDK形式接入应用程序120。应用程序120的开发者在开发应用程序120时,以埋点方式在应用程序120的程序代码中调用性能管理装置110提供的埋点函数。
参考图1所示,性能管理装置110包括:性能数据采集模块112和性能管理进程模块114。可选地,性能管理进程模块114为独立于应用程序的进程。
性能数据采集模块112被配置为向应用程序120提供埋点函数,埋点函数在被应用程序120调用时,采集事务的性能数据,并将事务的ID和事务的性能数据发送给性能管理进程模块114。性能管理进程模块114用于接收和记录事务的ID和事务的性能数据。在本申请实施例中,可包括多个埋点函数,不同的埋点函数采集不同的性能数据。在本文的示例中,以序号命名埋点函数,但应当理解,这不是对埋点函数的数量和实现方式的限定。
在某些示例中,性能数据采集模块112提供第一埋点函数和第二埋点函数,应用程序120以埋点方式调用第一和第二埋点函数。应用程序120,被配置为在事务开始时,调用第一埋点函数。第一埋点函数用于确定事务的ID,并生成事务开始时间戳,将事务的ID和事务开始时间戳发送给性能管理进程模块114。性能管理进程模块114接收并记录事务的ID和事务开始时间戳。应用程序120,被配置为在事务结束时,调用第二埋点函数,在调用时将第一埋点函数确定的事务的ID作为参数传递给第二埋点函数。第二埋点函数,用于生成事务结束时间戳,将事务结束时间戳和事务的ID发送给性能管理进程模块114。性能管理进程模块114接收并记录事务的ID和事务结束时间戳。
在某些示例中,为了性能分析,第一埋点函数,还用于采集第一预设参数,并将第一预定参数与事务的ID一同发送给性能管理进程模块114,其中,该第一预设参数与性能分析相关。
作为一个示例性说明,以http服务为例,http的一次请求处理视为一个事务。其中,应用程序120可被配置为以url为参数调用第一埋点函数,第一埋点函数将事务的ID和url发送给性能管理进程模块114;或者,应用程序120可被配置为以请求处理过程名为参数调用第一埋点函数,第一埋点函数将事务的ID和过程发送给性能管理进程模块114。由此,在性能分析过程中,按url分类或者按处理过程名分类,可以有效帮助应用开发者/运维人员缩小问题范围,进而定位系统问题原因。应当理解,本申请实施例并不限于此,其他与性能分析相关的一个或多个参数也是可行。
在某些示例中,事务包括多个子过程,事务的性能数据包括子过程的性能数据,性能数据采集模块112提供第三埋点函数,以采集子过程的性能数据。应用程序120还被配置为,以事务的ID为参数调用第三埋点函数。第三埋点函数,用于确定事务的子过程的ID并采集子过程的性能数据,并将子过程的ID、事务的ID和子过程的性能数据发送给性能管理进程模块114。性能管理进程模块114用于接收子过程的ID、事务的ID和子过程的性能数据。性能管理进行114可确定子过程的ID与事务的ID之间的关联关系,从而确定子过程所属的事务。
在某些示例中,性能数据采集模块112提供的第三埋点函数包括第四和第五埋点函数。应用程序120还被配置为,在子过程开始时,以事务的ID为参数调用第四埋点函数。第四埋点函数,用于确定子过程的ID和生成子过程开始时间戳,并将子过程的ID、事务的ID、子过程开始时间戳发送给性能管理进程模块114。性能管理进程模块114用于接收并记录事务的ID、子过程的ID和子过程的性能数据。应用程序120还被配置为,在子过程结束时,以子过程的ID为参数调用第五埋点函数。第五埋点函数,用于生成子过程结束时间戳,并将子过程的ID和子过程结束时间戳发送给性能管理进程模块114。性能管理进程模块114用于接收子过程的ID和子过程结束时间戳。
在某示例中,第四埋点函数,还用于采集第二预设参数,并将第二预定参数与子过程的ID、事务的ID一同发送给性能管理进程模块114,其中,该第二预设参数与性能分析相关。
作为示例性说明,应用程序120可被配置为以业务处理过程名为第二预设参数调用第四埋点函数,第四埋点函数将子过程的ID和业务处理过程名发送给性能管理进程模块114。由此,在性能分析过程中,通过业务处理过程定位问题事务流程分支,可以有效帮助开发/运维人员定位问题。
在某些示例中,为了便于进行性能分析,性能数据采集模块112提供第六埋点函数,应用程序120以埋点方式调用第六埋点函数。应用程序120还被配置为在事务执行过程中,调用第六埋点函数。第六埋点函数,用于将事务的ID和事务的执行参数发送给性能管理进程模块114,其中,事务的执行参数是第六埋点函数采集的和/或应用程序120作为参数传递给第六埋点函数的。
作为示例性说明,以http服务为例,http的一次请求处理视为一个事务,其中,应用程序120可被配置为以url为参数调用第六埋点函数,第六埋点函数将事务的ID和url发送给性能管理进程模块114;或者,应用程序120可被配置为以http头中的每个属性为参数,调用第六埋点函数,第六埋点函数将事务的ID和http头中的每个属性发送给性能管理进程模块114。由此,便于对于http的执行性能分析和故障分析,http头携带的属性信息和url参数是开发/运维人员确定系统问题的重要依据之一。
在某些示例中,为了便于进行性能分析,性能数据采集模块112提供第七埋点函数,应用程序120能够以埋点方式调用第七埋点函数。应用程序120还被配置为,在子过程执行过程中,以子过程的ID为参数调用第七埋点函数。第七埋点函数,用于将子过程的ID和子过程的执行参数发送给性能管理进程模块114,其中,子过程的执行参数是第七埋点函数采集的和/或应用程序120作为参数传递给第七埋点函数的。
作为示例性说明,以数据库调用为例,一次数据库调用视为一个子过程,其中,应用程序120可被配置为以子过程的ID、数据库的类型(mysql/postgresql/oracle等)、主机名、库名、sql语句作为参数调用第七埋点函数,记录数据库调用的开始时间。对于数据库调用执行性能分析和故障分析,主机名/库名/sql语句是定位问题的主要依据,数据库类型是分析报表分类展示依据。
作为示例性说明,应用程序120以埋点方式调用埋点函数,在某些示例中,埋点函数确定事务的ID或子过程的ID后,向应用程序120返回事务的ID或子过程的ID,应用程序120使用事务的ID或子过程的ID调用埋点函数。例如,在子过程开始时,一埋点函数确定子过程的ID,并将或子过程的ID返回给应用程序120;应用程序120在子过程结束时,以子过程的ID为参数调用另一埋点函数,使得该埋点函数获取到子过程的ID,并将子过程的ID与相关性能数据发送给性能管理进程模块114。
作为示例性说明,应用程序120可缓存事务的ID或子过程的ID,在应用程序120调用埋点函数时,从缓存中获取事务的ID或子过程的ID,并以事务的ID或子过程的ID为参数调用埋点函数,但本申请实施例并不限于此,在应用程序120内部传递事务的ID或子过程的ID的其他示例也是可行的。
本申请实施例提供了一种性能数据采集方法,图2为本申请实施例提供的性能数据采集方法一个示例的流程图,如图2所示,该方法包括步骤S202至步骤S204。
步骤S202,埋点函数确定事务的ID并采集事务的性能数据,并将事务的ID和事务的性能数据发送给性能管理进程。
步骤S204,性能管理进程接收并记录事务的ID和事务的性能数据。
通过该示例,由于埋点操作向性能管理进程发送事务的ID和性能数据,所以对于埋点错误的情况,也不会产生内存泄漏;并且,CPU资源占用相对下降,对应用程序的影响减少,事务性能测量更准确;进一步的,通过性能管理进程接收和记录事务的ID和性能数据,能够实现多进程协作类型的应用程序的性能管理。
作为示例性说明,应用程序以埋点方式调用埋点函数,在某些示例中,埋点函数确定事务的ID后,向应用程序返回事务的ID,应用程序使用事务的ID调用埋点函数。例如,在事务开始时,一埋点函数确定事务的ID,并将事务的ID返回给应用程序;应用程序在事务结束时,以事务的ID为参数调用另一埋点函数,使得该埋点函数获取到事务的ID,并将事务的ID与相关性能数据发送给性能管理进程。
作为示例性说明,应用程序可缓存事务的ID,在应用程序调用埋点函数时,从缓存中获取事务的ID,并以事务的ID为参数调用埋点函数,但本申请实施例并不限于此,在应用程序内部传递事务的ID的其他示例也是可行的。
在某些示例中,上述步骤S202包括:在事务开始时,第一埋点函数确定事务的ID和生成事务开始时间戳,并将事务的ID、事务开始时间戳发送给性能管理进程;在事务结束时,第二埋点函数生成事务结束时间戳,并将事务的ID和事务结束时间戳发送给性能管理进程,其中,第二埋点函数是以事务的ID为参数被调用的。
在某些示例中,上述步骤S202还包括:在事务执行过程中,第六埋点函数将事务的ID和事务的执行参数发送给性能管理进程,其中,事务的执行参数是第六埋点函数采集的和/或作为参数传递给第六埋点函数的。
在某些示例中,为了性能分析,在事务开始时,第一埋点函数采集第一预设参数,将第一预设参数与事务的ID一通发送给性能管理进程,该第一预设参数与性能分析相关。
在某些示例中,第一埋点函数在确定事务的ID后,将事务的ID返回给应用程序,以便应用程序在调用其他埋点函数时使用,例如,应用程序以事务的ID为参数调用第二埋点函数和第六埋点函数,但本申请实施例并不限于此。
图3为本申请实施例提供的性能数据采集方法另一个示例的流程图,该示例示出了包含多个子过程的事务的性能数据采集过程,如图3所示,该方法包括步骤S302至步骤S312。
步骤S302,在事务开始时,第一埋点函数确定事务的ID和生成事务开始时间戳,并将事务的ID、事务开始时间戳发送给性能管理进程。
步骤S304,性能管理进程接收事务的ID和事务开始时间戳。
在该示例中,事务包括多个子过程。
步骤S306,第三埋点函数确定事务的子过程的ID并采集子过程的性能数据,并将子过程的ID、事务的ID和子过程的性能数据发送给性能管理进程,其中,第三埋点函数是以事务的ID为参数被调用的。
步骤S308,性能管理进程接收子过程的ID、事务的ID和子过程的性能数据。
步骤S310,在事务结束时,第二埋点函数生成事务结束时间戳,并将事务的ID和事务结束时间戳发送给性能管理进程,其中,第二埋点函数是以事务的ID为参数被调用的。
步骤S312,性能管理进程接收事务的ID和事务结束时间戳。
在某些示例中,上述步骤S306中,第三埋点函数包括第四埋点函数和第五埋点函数,步骤S306包括:在子过程开始时,第四埋点函数确定子过程的ID和生成子过程开始时间戳,并将子过程的ID、事务的ID、子过程开始时间戳发送给性能管理进程,其中,第四埋点函数是以事务的ID为参数被调用的;在子过程结束时,第五埋点函数生成子过程结束时间戳,并将事务的ID和子过程结束时间戳发送给性能管理进程,其中,第五埋点函数是以子过程的ID为参数被调用的。
在某些示例中,上述方法还包括:在事务执行过程中,第六埋点函数将事务的ID和事务的执行参数发送给性能管理进程,其中,事务的执行参数是第六埋点函数采集的和/或作为参数传递给第六埋点函数的。执行参数参见本文前述说明,本申请实施例对此不做赘述。
在某些实施例中,上述步骤S306,还包括:在子过程执行过程中,第七埋点函数将子过程的ID和子过程的执行参数发送给性能管理进程,其中,子过程的执行参数是第七埋点函数采集的和/或作为参数传递给第七埋点函数的。执行参数参见本文前述说明,本申请实施例对此不做赘述。
在某些实施例中,上述步骤S302中,在事务开始时,第一埋点函数确定事务的ID和生成事务开始时间戳,并将事务的ID和事务开始时间戳发送给性能管理进程,第一埋点函数还采集第一预设参数,并将第一预定参数发送给性能管理进程,其中,该第一预设参数与性能分析相关。第一预设参数参见本文前述说明,本申请实施例对此不做赘述。
在某些实施例中,上述步骤S306中,在子过程开始时,第四埋点函数确定子过程的ID和生成子过程开始时间戳,并将子过程的ID、事务的ID和子过程开始时间戳发送给性能管理进程,第四埋点函数还采集第二预设参数,并将第二预定参数发送给性能管理进程,其中,该第二预设参数与性能分析相关。第二预设参数参见本文前述说明,本申请实施例对此不做赘述。
作为示例性说明,应用程序以埋点方式调用埋点函数,在某些示例中,埋点函数确定事务的ID或子过程的ID后,向应用程序返回事务的ID或子过程的ID,应用程序使用事务的ID或子过程的ID调用埋点函数。例如,在子过程开始时,一埋点函数确定子过程的ID,并将或子过程的ID返回给应用程序;应用程序在子过程结束时,以子过程的ID为参数调用另一埋点函数,使得该埋点函数获取到子过程的ID,并将子过程的ID与相关性能数据发送给性能管理进程。
作为示例性说明,应用程序可缓存事务的ID或子过程的ID,在应用程序调用埋点函数时,从缓存中获取事务的ID或子过程的ID,并以事务的ID或子过程的ID为参数调用埋点函数,但本申请实施例并不限于此,在应用程序内部传递事务的ID或子过程的ID的其他示例也是可行的。
图4为本申请实施例提供的性能数据采集方法的多进程事务性能数据采集示例的流程图,如图4所示,该方法包括步骤S402至步骤S428。
步骤S402,主进程A:在事务开始时,调用埋点函数。埋点函数确定事务的ID,生成事务开始时间戳,采集事务的相关参数。埋点函数将事务开始时间戳、事务的ID和相关参数发送给性能管理进程,性能管理进程记录事务状态。
步骤S404,主进程A:在事务执行过程中调用埋点函数,埋点函数将事务的执行参数连同事务的ID发送到性能管理进程。
步骤S406,主进程A:将事务的ID数据序列化成字符串X,连同事务相关数据通过进程通信发送到工作进程B。
步骤S408,工作进程B:将字符串X解析成事务的ID。
步骤S410,工作程序B:在第一子过程执行开始时,显式或者隐式使用事务的ID作为参数,调用埋点函数;埋点函数得到第一子过程的ID,生成第一子过程开始时间戳,采集第一子过程的相关参数,将相关参数、第一子过程开始时间戳、第一子过程的ID连同事务的ID异步发送到性能管理进程。
步骤S412,工作进程B:第一子过程执行中,显式或者隐式使用第一子过程的ID作为参数,调用埋点函数;埋点函数将第一子过程的执行参数连同第一子过程的ID发送给性能管理进程。
步骤S414,工作进程B:第一子过程执行结束时,显式或者隐式使用第一子过程的ID作为参数,调用埋点函数;埋点函数将第一子过程结束时间戳和第一子过程的ID发送给性能管理进程。
步骤S416,工作进程B:将字符串X连同事务相关数据通过进程通信发送到工作进程C。
步骤S418,工作进程C:将字符串X解析成事务的ID。
步骤S420,工作程序C:在第二子过程执行开始时,显式或者隐式使用事务的ID作为参数,调用埋点函数;埋点函数得到第二子过程的ID,生成第二子过程开始时间戳,采集第二子过程的相关参数,将相关参数、第二子过程开始时间戳、第二子过程的ID连同事务的ID异步发送到性能管理进程。
步骤S422,工作进程C:第二子过程执行中,显式或者隐式使用第二子过程的ID作为参数,调用埋点函数;埋点函数将第二子过程的执行参数连同第二子过程的ID发送给性能管理进程。
步骤S424,工作进程C:第二子过程执行结束时,显式或者隐式使用第二子过程的ID作为参数,调用埋点函数;埋点函数将第二子过程结束时间戳和第二子过程的ID发送给性能管理进程。
步骤S426,工作进程C:将事务相关数据通过进程通信发送到主进程A。
步骤S428,主进程A:在事务结束时,显式或者隐式使用事务的ID作为参数,调用埋点函数。埋点函数生成事务结束时间戳,将事务的ID和事务结束时间戳发送给性能管理进程。
应当理解,图4所示的示例,仅示出了包含一个主进程和两个工作进程的多进程协作的情况,但本申请实施例并不限于此。对于多于2个工作进程的情况,可在进程之间传递事务的ID以及按照上述方式进行子过程的性能数据采集,本申请实施例对此不做赘述。
图4所示的示例,仅示出了工作进程B执行第一子过程、工作进程C执行第二子过程的情况,但本申请实施例并不限于此。本申请实施例同样适用于多个进程协作完成一个子过程的情况,可在多个进程之间传递子过程的ID,本申请实施例对此不做赘述。
在本申请实施例中,上述埋点函数发送消息到性能管理进程的方式记录事务的性能数据,发送消息的方式包括但不限于:socket通信、本地unixsocket通信、共享内存、管道、消息队列等。
本实施例还提供一种计算机设备,如可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备20至少包括但不限于:可通过系统总线相互通信连接的存储器21、处理器22,如图5所示。需要指出的是,图5仅示出了具有组件21-22的计算机设备20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器21(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器21可以是计算机设备20的内部存储单元,例如该计算机设备20的硬盘或内存。在另一些实施例中,存储器21也可以是计算机设备20的外部存储设备,例如该计算机设备20上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器21还可以既包括计算机设备20的内部存储单元也包括其外部存储设备。本实施例中,存储器21通常用于存储安装于计算机设备20的操作系统和各类应用软件,例如性能数据采集方法的程序代码等。此外,存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制计算机设备20的总体操作。本实施例中,处理器22用于运行存储器21中存储的程序代码或者处理数据,例如性能数据采集方法的程序代码,以实现性能数据采集方法。
本实施例还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器执行时实现相应功能。本实施例的计算机可读存储介质用于存储APM探针采样率确定程序,被处理器执行时实现性能数据采集方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本申请的保护之内。
Claims (12)
1.一种性能数据采集方法,其特征在于,包括:
埋点函数确定事务的ID并采集事务的性能数据,并将事务的ID和事务的性能数据发送给性能管理进程;
所述性能管理进程接收并记录事务的ID和事务的性能数据。
2.根据权利要求1所述的性能数据采集方法,其特征在于,还包括:
埋点函数将事务的ID返回给应用程序,以使所述应用程序以事务的ID为参数调用埋点函数。
3.根据权利要求1或2所述的性能数据采集方法,其特征在于,埋点函数确定事务的ID并采集事务的性能数据,并将事务的ID和事务的性能数据发送给性能管理进程,包括:
在事务开始时,第一埋点函数确定事务的ID和生成事务开始时间戳,并将事务的ID和事务开始时间戳发送给性能管理进程;
在事务结束时,第二埋点函数生成事务结束时间戳,并将事务的ID、事务结束时间戳发送给性能管理进程,其中,所述第二埋点函数是以事务的ID为参数被调用的。
4.根据权利要求3所述的性能数据采集方法,其特征在于,埋点函数确定事务的ID并采集事务的性能数据,并将事务的ID和事务的性能数据发送给性能管理进程,还包括:
第三埋点函数确定事务的子过程的ID并采集子过程的性能数据,并将子过程的ID、事务的ID和子过程的性能数据发送给所述性能管理进程,其中,所述第三埋点函数是以事务的ID为参数被调用的。
5.根据权利要求4所述的性能数据采集方法,其特征在于,第三埋点函数确定事务的子过程的ID并采集子过程的性能数据,并将子过程的ID、事务的ID和子过程的性能数据发送给所述性能管理进程,包括:
在子过程开始时,第四埋点函数确定子过程的ID和生成子过程开始时间戳,并将子过程的ID、事务的ID和子过程开始时间戳发送给性能管理进程,其中,所述第四埋点函数是以事务的ID为参数被调用的;
在子过程结束时,第五埋点函数生成子过程结束时间戳,并将子过程的ID和子过程结束时间戳发送给性能管理进程,其中,所述第五埋点函数是子过程的ID为参数被调用的。
6.根据权利要求3所述的性能数据采集方法,其特征在于,埋点函数确定事务的ID并采集事务的性能数据,并将事务的ID和事务的性能数据发送给性能管理进程,还包括:
在事务执行过程中,第六埋点函数将事务的ID和事务的执行参数发送给性能管理进程,其中,所述事务的执行参数是所述第六埋点函数采集的和/或作为参数传递给所述第六埋点函数的。
7.根据权利要求5所述的性能数据采集方法,其特征在于,第三埋点函数确定事务的子过程的ID并采集子过程的性能数据,并将子过程的ID、事务的ID和子过程的性能数据发送给所述性能管理进程,还包括:
在子过程执行过程中,第七埋点函数将子过程的ID和子过程的执行参数发送给性能管理进程,其中,所述子过程的执行参数是所述第七埋点函数采集的和/或作为参数传递给所述第七埋点函数的。
8.根据权利要求3所述的性能数据采集方法,其特征在于,在事务开始时,第一埋点函数确定事务的ID和生成事务开始时间戳,并将事务的ID和事务开始时间戳发送给性能管理进程,还包括:
所述第一埋点函数采集第一预设参数,并将第一预定参数发送给性能管理进程,其中,所述第一预设参数与性能分析相关。
9.根据权利要求5所述的性能数据采集方法,其特征在于,在子过程开始时,第四埋点函数确定子过程的ID和生成子过程开始时间戳,并将子过程的ID、事务的ID和子过程开始时间戳发送给性能管理进程,还包括:
所述第四埋点函数采集第二预设参数,并将第二预定参数发送给性能管理进程,其中,所述第二预设参数与性能分析相关。
10.根据权利要求1或2所述的性能数据采集方法,其特征在于,所述性能管理进程为独立于应用程序的进程。
11.一种计算机设备,其特征在于,所述计算机设备包括:
存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;
所述计算机程序被所述处理器执行时实现如权利要求1至10中任一项所述的性能数据采集方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有性能数据采集程序,所述性能数据采集程序被处理器执行时实现如权利要求1至10中任一项所述的性能数据采集方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010994696.XA CN112148574B (zh) | 2020-09-21 | 2020-09-21 | 一种性能数据采集方法、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010994696.XA CN112148574B (zh) | 2020-09-21 | 2020-09-21 | 一种性能数据采集方法、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148574A true CN112148574A (zh) | 2020-12-29 |
CN112148574B CN112148574B (zh) | 2021-04-23 |
Family
ID=73893399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010994696.XA Active CN112148574B (zh) | 2020-09-21 | 2020-09-21 | 一种性能数据采集方法、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148574B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112667481A (zh) * | 2020-12-31 | 2021-04-16 | 中国建设银行股份有限公司 | 数据采集工具包、方法及设备 |
CN113052592A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 手机银行app性能监控装置及方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335142A (zh) * | 2014-07-29 | 2016-02-17 | 国际商业机器公司 | 在事务处理系统中标识事务的性能瓶颈的方法和装置 |
CN108471366A (zh) * | 2018-02-02 | 2018-08-31 | 深圳市康拓普信息技术有限公司 | 一种面向云原生应用的立体监控系统 |
WO2018212369A1 (ko) * | 2017-05-17 | 2018-11-22 | 디프트 주식회사 | 2.5차원 이미지를 활용한 가상 전시 공간 시스템 및 제공 방법 |
CN111124858A (zh) * | 2019-12-13 | 2020-05-08 | 天津酷码数据科技有限公司 | 无埋点插码数据处理方法、系统、终端设备及存储介质 |
CN111309550A (zh) * | 2020-02-05 | 2020-06-19 | 江苏满运软件科技有限公司 | 应用程序的数据采集方法、系统、设备和存储介质 |
CN111427780A (zh) * | 2020-03-10 | 2020-07-17 | 畅捷通信息技术股份有限公司 | 函数信息的追踪方法、装置和计算机可读存储介质 |
US10735293B2 (en) * | 2014-11-27 | 2020-08-04 | Cellos Software Ltd | Method and network monitoring device for estimating web page download time on a user device |
-
2020
- 2020-09-21 CN CN202010994696.XA patent/CN112148574B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335142A (zh) * | 2014-07-29 | 2016-02-17 | 国际商业机器公司 | 在事务处理系统中标识事务的性能瓶颈的方法和装置 |
US10735293B2 (en) * | 2014-11-27 | 2020-08-04 | Cellos Software Ltd | Method and network monitoring device for estimating web page download time on a user device |
WO2018212369A1 (ko) * | 2017-05-17 | 2018-11-22 | 디프트 주식회사 | 2.5차원 이미지를 활용한 가상 전시 공간 시스템 및 제공 방법 |
CN108471366A (zh) * | 2018-02-02 | 2018-08-31 | 深圳市康拓普信息技术有限公司 | 一种面向云原生应用的立体监控系统 |
CN111124858A (zh) * | 2019-12-13 | 2020-05-08 | 天津酷码数据科技有限公司 | 无埋点插码数据处理方法、系统、终端设备及存储介质 |
CN111309550A (zh) * | 2020-02-05 | 2020-06-19 | 江苏满运软件科技有限公司 | 应用程序的数据采集方法、系统、设备和存储介质 |
CN111427780A (zh) * | 2020-03-10 | 2020-07-17 | 畅捷通信息技术股份有限公司 | 函数信息的追踪方法、装置和计算机可读存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112667481A (zh) * | 2020-12-31 | 2021-04-16 | 中国建设银行股份有限公司 | 数据采集工具包、方法及设备 |
CN112667481B (zh) * | 2020-12-31 | 2024-05-10 | 中国建设银行股份有限公司 | 数据采集工具包、方法及设备 |
CN113052592A (zh) * | 2021-04-30 | 2021-06-29 | 中国银行股份有限公司 | 手机银行app性能监控装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112148574B (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107122258B (zh) | 用于测试接口的状态码校验的方法及设备 | |
CN107122297B (zh) | 用于测试接口的请求消息生成的方法及设备 | |
CN112241360B (zh) | 一种测试用例生成方法、装置、设备及存储介质 | |
CN112148574B (zh) | 一种性能数据采集方法、计算机设备及存储介质 | |
CN110134583B (zh) | 软件测试及数据处理方法及装置 | |
CN109598602B (zh) | 对账方法、装置、设备及计算机可读存储介质 | |
CN113448854A (zh) | 一种回归测试方法和装置 | |
CN111158741A (zh) | 监控业务模块对第三方类库依赖关系变化的方法及装置 | |
CN112631924A (zh) | 自动化测试方法、装置、计算机设备及存储介质 | |
CN111225073A (zh) | 业务编码分配方法及装置、存储介质、计算机系统 | |
CN111427796A (zh) | 系统测试方法、装置及电子设备 | |
CN111324510B (zh) | 日志处理方法、装置及电子设备 | |
CN112860662A (zh) | 数据血缘关系建立方法、装置、计算机设备及存储介质 | |
CN114398293A (zh) | 接口测试用例生成方法、电子设备和存储介质 | |
CN114218110A (zh) | 财务数据的对账测试方法、装置、计算机设备及存储介质 | |
CN113986747A (zh) | 一种数据生成方法、装置、电子设备及存储介质 | |
CN113360396A (zh) | 一种软件性能压测方法及装置 | |
CN112685077A (zh) | 数据修改方法、系统、计算机设备及计算机可读存储介质 | |
RU2532714C2 (ru) | Способ получения данных при оценке ресурсов сети и устройство для осуществления способа | |
CN115757107A (zh) | 埋点检测方法、装置、服务器及存储介质 | |
CN115470139A (zh) | 一种接口测试方法及相关设备 | |
CN114416420A (zh) | 设备问题反馈方法和系统 | |
CN114969175A (zh) | 保险平台与外部系统的对接方法及相关设备 | |
CN109246297B (zh) | 一种确定移动终端恢复出厂设置时间的方法、装置及存储介质 | |
CN113852610A (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 |