CN111124702A - 性能数据采集方法、装置和计算机可读存储介质 - Google Patents
性能数据采集方法、装置和计算机可读存储介质 Download PDFInfo
- Publication number
- CN111124702A CN111124702A CN201911154521.1A CN201911154521A CN111124702A CN 111124702 A CN111124702 A CN 111124702A CN 201911154521 A CN201911154521 A CN 201911154521A CN 111124702 A CN111124702 A CN 111124702A
- Authority
- CN
- China
- Prior art keywords
- thread
- request
- performance data
- target
- data acquisition
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- 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/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请涉及一种性能数据采集方法、装置和计算机可读存储介质,方法包括:创建至少一个服务线程组,服务线程组包括第一线程及第二线程;第一线程监听性能数据获取请求,将性能数据获取请求缓存到对应的第一消息队列;第一线程从第一消息队列中读取目标性能数据获取请求,将目标性能数据获取请求写入预先创建的调试桥客户端,并向第二线程发送结果读取请求;调试桥客户端用于根据性能数据获取请求获取对应的请求结果;第二线程在接收到结果读取请求后,从调试桥客户端读取请求结果;第一线程接收第二线程发送的请求结果;请求结果用于确定目标性能数据获取请求对应的目标性能数据。本申请提供的方案可以节省计算机***资源。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种性能数据采集方法、装置和计算机可读存储介质。
背景技术
在安卓手机的实际应用中,经常需要对安卓手机进程进行性能数据采集,以实时掌握安卓手机的进程性能。
传统技术中,进行性能数据采集时,通常是通过PC(Personal Computer,个人计算机)端向安卓***桥接接口发送命令请求来获取进行性能数据。具体来说,通常是由采用多个采集线程,每个线程每秒启停1个或者2个调试桥客户端进程来同步执行1个命令,命令执行完成后返回结果,采集线程读取结果并存储,然后调试桥客户端进程立即关闭,最后由***释放回收进程资源。这种方式,短时间内需要频繁的创建和销毁调试桥客户端进程,导致计算机***资源的浪费。
发明内容
基于此,有必要针对背景技术中引出的技术问题,提供一种性能数据采集方法、装置和计算机可读存储介质。
一种性能数据采集方法,包括:
创建至少一个服务线程组,所述服务线程组包括第一线程及第二线程;
所述第一线程监听性能数据获取请求,将所述性能数据获取请求缓存到对应的第一消息队列;
所述第一线程从所述第一消息队列中读取性能数据获取请求,将读取到的性能数据获取请求作为目标性能数据获取请求;
所述第一线程将所述目标性能数据获取请求写入预先创建的调试桥客户端,并向所述第二线程发送结果读取请求;所述调试桥客户端用于根据所述性能数据获取请求获取对应的请求结果;
所述第二线程在接收到所述结果读取请求后,从所述调试桥客户端读取所述请求结果;
所述第一线程接收所述第二线程发送的所述请求结果;所述请求结果用于确定所述目标性能数据获取请求对应的目标性能数据。
一种性能数据采集装置,所述装置包括:
创建模块,用于创建至少一个服务线程组,所述服务线程组包括第一线程及第二线程;
所述第一线程用于监听性能数据获取请求,将所述性能数据获取请求缓存到对应的第一消息队列;
所述第一线程还用于从所述第一消息队列中读取性能数据获取请求,将读取到的性能数据获取请求作为目标性能数据获取请求;
所述第一线程还用于将所述目标性能数据获取请求写入预先创建的调试桥客户端,并向所述第二线程发送结果读取请求;所述调试桥客户端用于根据所述性能数据获取请求获取对应的请求结果;
所述第二线程用于在接收到所述结果读取请求后,从所述调试桥客户端读取所述请求结果;
所述第一线程还用于接收所述第二线程发送的所述请求结果;所述请求结果用于确定所述目标性能数据获取请求对应的目标性能数据。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的性能数据采集方法。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得处理器实现如上所述的性能数据采集方法。
上述性能数据采集方法、装置、计算机可读存储介质和计算机设备,通过创建至少一个服务线程组,该服务线程组包括第一线程和第二线程,第一线程监听性能数据获取请求,将性能数据获取请求缓存到对应的第一消息队列,第一线程从消息队列中读取性能数据获取请求,将读取到的性能数据获取请求作为目标性能数据获取请求,第一线程将目标性能数据获取请求写入预先创建的调试桥客户端,并向第二线程发送结果读取请求;调试桥客户端用于根据性能数据获取请求获取对应的请求结果,第二线程在接收到结果读取请求后,从调试桥客户端读取请求结果,第一线程接收第二线程发送的请求结果,该请求结果用于确定目标性能数据,以实现性能数据的采集。由于第一线程在监听到性能数据获取请求后,可通过第一消息队列对性能数据获取请求进行缓存,并可以不断地从该消息队列中读取性能数据获取请求写入预先创建的调试桥客户端,这样,调试客户端在创建后,可以持续提供命令执行服务,不需要像传统技术那样,执行完一次命令后即被销毁,从而避免了频繁的创建和销毁调试桥客户端进程,节省了计算机***资源。
附图说明
图1为一个实施例中性能数据采集方法的应用环境图;
图2为一个实施例中性能数据采集方法的流程示意图;
图3为一个实施例中S204之前的流程示意图;
图4为一个实施例中第一线程对请求结果进行解析的流程示意图;
图5为另一个实施例中第一线程对请求结果进行解析的流程示意图;
图6为另一个实施例中S204之前的流程示意图;
图7为一个实施例中性能数据采集方法对应的服务结构和通信流程图;
图8为一个实施例中性能数据采集方法对应的服务通信时序图;
图9为另一个实施例中性能数据采集装置的结构框图;
图10为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中性能数据采集方法的应用环境图。参照图1,该性能数据采集方法应用于性能数据采集***中。该***包括计算机设备110和终端120。计算机设备110与终端120通过USB数据线或者网络进行连接。计算机设备110可以是台式机、一体机、笔记本电脑等,终端120为移动终端,具体可以是手机、平板电脑、可穿戴智能设备等中的至少一种。
计算机设备110上可创建至少一个服务器线程组,服务线程组包括第一线程及第二线程,第一线程监听性能数据获取请求,首先将性能数据获取请求缓存到对应的第一消息队列,第一线程会从按照消息队列中性能数据获取请求的排序先后从中读取性能数据获取请求作为目标性能数据获取请求,然后将该目标性能数据获取请求写入预先创建的调试桥客户端,并向第二线程发送该目标性能数据获取请求对应的结果读取请求,调试桥客户端会根据目标性能数据获取请求从终端120获取对应的请求结果,因此,第二线程在接收到结果读取请求后,可以从调试桥客户端读取该请求结果,并发送至第一线程,最后,第一线程对该请求结果进行接收,该请求结果可以用于确定目标性能数据获取请求对应的目标性能数据,以实现性能数据采集。
如图2所示,在一个实施例中,提供了一种性能数据采集方法。本实施例主要以该方法应用于上述图1中的计算机设备110来举例说明。参照图2,该性能数据采集方法具体包括如下步骤:
S202,创建至少一个服务线程组,服务线程组包括第一线程及第二线程。
具体地,服务线程组用于提供性能数据获取服务。服务线程组中可以包括一个第一线程及一个第二线程。为满足并发需求,可以创建多个服务线程组形成固定数量的线程池。外部调用时,可根据需要和实测性能分配线程池大小,也可以指定执行命令归属的服务线程组。在一个实施例中,服务线程组由下标thread_index进行标识,通过指定thread_index即可指定对应的服务线程组作为目标线程组来执行命令。可以理解的是,本申请中的命令指的是获取性能数据的命令,也就是性能数据获取请求。
S204,第一线程监听性能数据获取请求,将性能数据获取请求缓存到对应的第一消息队列。
其中,性能数据获取请求指的是用于获取终端进程性能数据的请求,性能数据获取请求由外部调用程序进行下发。性能数据包括但不限于CPU占比、内存数据、网络数据等等。第一线程对性能数据获取请求进行监听,在监听到性能数据获取请求时,将监听到的性能数据获取请求写入与该线程对应的第一消息队列中。
在一个实施例中,外部调用程序可通过启动多个性能数据采集线程,通过性能数据采集线程下发性能数据获取请求。
S206,第一线程从第一消息队列中读取性能数据获取请求,将读取到的性能数据获取请求作为目标性能数据获取请求。
具体地,第一线程执行循环检测,判断当前是否有正在执行的性能数据获取请求,若有,则等待该性能数据获取请求执行完毕,若没有,则从其对应的第一消息队列中读取一条性能数据获取请求,将读取的性能数据获取请求作为目标性能数据获取请求。此后,该目标性能数据获取请求会进入执行状态,第一线程会将目标性能数据获取请求进行第一状态标记,以表征该目标性能数据获取请求正在执行,例如,第一状态标记可以为TRUE,第一线程在执行循环检测时,可根据状态标记判断当前是否有正在执行的性能数据获取请求;当目标性能数据获取请求执行完毕,第一线程会将该目标性能数据获取请求的第一状态标记更改为第二状态标记,以表征目标性能数据获取请求执行完毕,例如,第二状态标记可以为FALSE,当第一线程检测到某条性能数据获取请求的状态标记为第二状态标记时,判定该性能数据获取请求执行完毕。
在一个实施例中,第一线程在执行循环检测时,若检测的次数超过预设阈值或者检测的时间超过预设阈值时,上一条性能数据获取请求仍然未执行完毕,可放弃等待以避免阻塞后续请求的执行。
在一个实施例中,当第一线程成功获取到性能数据获取请求对应的请求结果时,表示该条性能数据获取请求执行完毕。
S208,第一线程将目标性能数据获取请求写入预先创建的调试桥客户端,并向第二线程发送结果读取请求;调试桥客户端用于根据性能数据获取请求获取对应的请求结果。
其中,调试桥(Android Debug Bridge,ADB)是,是Android SDK里自带的一个工具,用这个工具可以直接操作管理Android模拟器(Emulator)或者是真实的Android设备。本实施例中,每一个服务线程组会创建一个调试桥客户端,调试桥客户端(以下简称ADB客户端)与计算机设备上的调试桥服务端(以下简称ADB服务端)进行通信。
具体地,第一线程在获取到目标性能数据获取请求后,将该目标性能数据获取请求写入由该第一线程所在服务线程组创建的ADB客户端进程的标准输入中,并向第二线程发送结果读取请求,结果读取请求指的是用于指示第二线程从ADB客户端进程的标准输出中读取请求结果的请求。ADB客户端在接收到该目标性能数据获取请求后,将该目标性能数据获取请求发送至ADB服务端,ADB服务端将该目标性能数据获取请求发送至终端上目标进程对应的调试桥守护进程(以下简称ADB守护进程),ADB守护进程接收到该目标性能数据获取请求后,从目标进程中获取对应的性能数据,并返回至ADB服务端,ADB服务端将该性能数据发送至对应的ADB客户端。可以理解的是,本申请中的目标进程指的是终端上需要采集性能数据的进程,例如可以是终端上的小游戏进程。
S210,第二线程在接收到结果读取请求后,从调试桥客户端读取请求结果。
S212,第一线程接收第二线程发送的请求结果;请求结果用于确定目标性能数据获取请求对应的目标性能数据。
具体地,第二线程在接收到结果读取请求后,可以从ADB客户端的标准输出中异步读取对应的请求结果。并将读取到的性能数据发送至第一线程。第一线程对该请求结果进行接收,通过该请求结果,计算机设备可确定目标性能数据获取请求对应的目标性能数据,从而实现对性能数据的采集。
在一个实施例中,第一线程接收到请求结果后,会对请求结果进行解析,并将解析结果写入与该第一线程对应的第二消息队列,外部调用程序可从该第二消息队列中读取到解析结果,该解析结果中包括了目标性能数据。可以理解的是,这里的第二消息队列指的是与第一消息队列不同的消息队列。
在另一个实施例中,第一线程接收到请求结果后,可直接将请求结果写入与该第一线程对应的第二消息队列,外部调用程序可从该第二消息队列中读取到请求结果,并对请求结果进行解析,从而获取到请求结果中包含的目标性能数据。
本实施例中,第一线程和第二线程会循环执行上述步骤。第一线程线程和第二线程的主循环睡眠时间和任务执行频率控制时间可以根据需要进行配置,例如,可配置主循环睡眠时间为10ms,任务执行频率控制时间为1s,保证能够及时收发请求,降低睡眠时间能降低误差以满足实时性要求。第一线程和第二线程通过此种方式计时比单次睡眠1s的方式的精度更高,也比使用python的setinterval定时器方案省去大量线程的开销。
可以理解的是,线程主循环的睡眠时间和任务执行频率控制时间是不一样的,例如:采集线程的采集任务执行时间是1s,而睡眠间隔时间是10ms,即每隔10ms检查当前时间到上次采集任务时间间隔是否到达1s,此时采集误差就是10ms左右。
上述性能数据采集方法,由于第一线程在监听到性能数据获取请求后,可通过第一消息队列对性能数据获取请求进行缓存,并可以不断地从该消息队列中读取性能数据获取请求写入预先创建的调试桥客户端,这样,调试客户端在创建后,可以持续提供命令执行服务,不需要像传统技术那样,执行完一次命令后即被销毁,从而避免了频繁的创建和销毁调试桥客户端进程,节省了计算机***资源。
进一步,由于设置了两个线程,两个线程分工合作,由第一线程发送读取性能数据获取请求、第二线程来异步读取对应的请求结果,相较于传统技术中对ADB客户端的同步调用,节省了对请求结果的等待时间,可以大大提高性能数据的采集效率。
在一个实施例中,如图3所示,在第一线程监听性能数据获取请求之前,还包括:
S302,启动性能数据采集线程。
其中,性能数据采集线程指的是用于调用服务线程组提供的性能数据获取服务的线程。本实施例中,计算机设备可以启动一个或者多个性能数据采集线程来调用服务线程组提供的性能数据获取服务。
S304,性能数据采集线程通过服务启用接口向第一线程发送携带设备标识信息的服务调用请求。
其中,设备标识信息指的是终端的标识信息,包括终端设备号、终端端口号中的至少一种。服务启用接口指的是服务线程组所提供的性能数据获取服务提供给外部进行调用的接口。
具体地,性能数据采集线程首先进行参数初始化,初始化的参数为ADB客户端进程的相关参数,包括但不限于设备标识信息、数据读取频率等等。在进行参数初始化后,性能数据采集线程可以根据设备标识信息生成服务调用请求,将该服务调用请求通过服务启用接口发送至服务线程组中的第一线程。
在一个实施例中,当有多个服务线程组时,服务启用接口可以将服务调用请求分别发送至每一个服务线程组中的第一线程。
在另一个实施例中,服务调用请求中可携带线程组标识,服务启用接口根据线程组标识将服务调用请求发送至对应的线程组中的第一线程。
S306,第一线程根据设备标识信息创建调试桥客户端,并将成功创建的调试桥客户端对应的进程对象标识发送至第二线程。
S308,第二线程收到进程对象标识后,返回服务调用成功通知。
其中,进程对象标识用于唯一标识一个ADB客户端。第一线程接收到服务调用请求后,根据服务调用请求中携带的设备标识信息创建对应的ADB客户端,并将创建成功的ADB客户端对应的进程对象标识发送至第二线程。第二线程接收到进程对象标识后,对该进程对象标识进行存储,同时返回服务调用成功通知。在返回服务调用成功通知时,第二线程首先将服务调用成功通知返回至第一线程,第一线程通过服务启用接口向性能数据采集线程返回该服务调用成功通知。
上述实施例中,通过提供服务启用接口,性能数据采集线程可以方便快捷地通过该服务启用接口对服务线程组提供的性能数据采集服务发起调用,快速地创建调试桥客户端。
在一个实施例中,目标性能数据获取请求中包括特殊字符串标记请求;特殊字符串标记请求用于获取特殊字符串;从调试桥客户端读取请求结果,包括:第二线程从调试桥客户端读取字符串;当读取到特殊字符串时,第二线程将截止至特殊字符串的所有字符串确定为结果读取请求对应的请求结果。
目标性能数据获取请求为组合命令的形式,依次包括命令请求、时间戳标记请求以及特殊字符串标记请求,命令请求指的是用于指示终端ADB守护进程执行命令以获取性能数据;时间戳请求用于指示终端ADB守护进程在命令执行结束时进行时间戳标记;特殊字符串标记请求用于指示ADB守护进程在命令执行结束时进行特殊字符串标记,以获取特殊字符串。
本实施例中,由于采用的是组合命令的形式,从ADB守护进程返回的也是组合请求结果,该组合请求结果以字符串的形式返回,该结果中依次包括性能数据、时间戳以及特殊字符串,其中的特殊字符串用于将不同的请求结果进行区分、能够起到分割作用,特殊字符串例如可以是“argusadbcmdmagicstr”。由于特殊字符串对不同的请求结果起到分割作用,第二线程从调试桥客户端读取某个结果读取请求对应的命令结果时,可从第一个字符串开始读取,直到读取到特殊字符串时,表示该条请求结果读取完毕,第二线程将该特征字符串之前的所有字符串确定为该结果读取请求对应的请求结果。此时,由于该条请求结果对应的特殊字符串已完成了使命,可以将该特殊字符串抛弃。
上述实施例中,由于性能数据获取请求为包括特殊字符串标记的组合请求,第二线程可以根据特殊字符串读取请求结果,保证了读取的请求结果的准确性。
在一个实施例中,目标性能数据获取请求携带请求标识;在第一线程接收第二线程发送的请求结果之后,还包括:第一线程获取请求结果对应的请求标识,将获取的请求标识与目标性能数据获取请求携带的请求标识进行比对;当比对一致时,第一线程对请求结果进行解析,并将解析结果写入对应的第二消息队列中;当比对不一致时,第一线程丢弃请求结果。
其中,请求标识用于唯一标识一条性能数据获取请求,性能数据获取请求在发送至ADB守护进程的过程中会一直携带该请求标识,ADB守护进程在根据性能数据获取请求获取对应的请求结果时,同样会在该请求结果中携带上该请求标识。这样,当请求结果最终被发送至第一线程时,第一线程可根据请求结果中携带的请求标识对该请求结果进行校验,校验的过程就是将该请求结果携带的请求标识与当前性能数据获取请求携带的请求标识,若该请求结果中携带的请求标识与为当前性能数据获取请求对应的请求标识一致,则说明是该请求结果是正确的,反之,则说明该请求结果不正确。可以理解的是,这里的当前性能数据获取请求指的是当前等待结果的性能数据获取请求。第一线程在确定该请求结果为正确的请求结果后,可以对该请求结果进行解析,将解析结果写入该第一线程对应的第二消息队列中。
本实施例中,第一线程在接收到请求结果后,根据请求标识对请求结果进行校验,可以保证接收到的请求结果为正确的请求结果,避免出现请求结果混乱的情况。
在一个实施例中,如图4所示,在S210第一线程接收第二线程发送的请求结果的步骤之后,该方法还包括第一线程对请求结果进行解析的步骤,该步骤具体包括:
S402,第一线程根据功能类型标识遍历预先建立的一级索引列表,从一级索引列表中确定一级目标索引项,将一级目标索引项对应的处理对象确定为目标处理对象。
其中,功能类型标识用于对目标性能数据获取请求所属的功能类型进行标识,功能类型包括但不限于获取CPU数据、获取内存数据、获取网络数据以及获取进程标识,这几种功能类型对应的标识例如可以分别为proccpu_cb_cmd_type、procmem_cb_cmd_type、procnet_cb_cmd_type、procpidpname_cb_cmd_type。第一请求类型标识用于对目标性能数据获取请求对应的具体请求类型进行标识,例如,对于属于获取CPU数据这一功能类型的请求,包括两个请求类型,一个是获取***CPU数据,一个是获取进行CPU数据,各自对应的标识例如可以是cb_ci_sysstat、cb_ci_procstat。
本实施例中,对于每一个功能类型预先创建对应的处理对象,并将各个功能类型标识与对应的处理对象标识进行关联,以建立一级索引列表;对每一个功能类型对应的每一个具体的请求类型预先创建对应的解析对象,并将各个请求类型标识与对应的解析对象标识进行关联,以建立二级索引列表。这里的处理对象指的是Android中handler对象,解析对象指的是Android中的callback对象。每一个处理对象预先绑定了对应的消息队列。
第一线程在接收到第二线程发送的请求结果后,可以对请求结果进行解析。由于目标性能数据获取请求携带了功能类型标识及第一请求类型标识,其对应的请求结果中自然也会携带功能类型标识及第一请求类型标识,第一线程在解析请求结果时,可以遍历预先建立的一级索引列表,将功能类型标识与一级索引列表中各个功能类型标识进行匹配,将匹配上的功能类型标识所在的索引项确定为一级目标索引项,由于一级目标索引项中的功能类型标识关联了处理对象标识,根据该处理对象标识,第一线程可以确定目标处理对象。
S404,第一线程根据第一请求类型标识从一级目标索引项对应的二级索引列表中确定二级目标索引项,将二级目标索引项对应的解析对象确定为第一目标解析对象。
在确定了目标处理对象后,第一线程可以遍历一级目标索引项对应的二级索引列表,将第一请求类型标识与二级索引列表中各个请求类型标识进行匹配,将匹配上的请求类型标识所在的索引项确定为二级目标索引项,由于二级目标索引项对应的请求类型标识关联了解析对象标识,根据该解析对象标识,第一线程可以确定第一目标解析对象。
S406,第一线程通过目标处理对象调用第一目标解析对象对请求结果进行解析,得到解析结果。
S408,第一线程根据解析结果确定目标性能数据,将目标性能数据写入目标处理对象对应的第二消息队列。
具体地,第一线程可以通过目标处理对象调用第一目标解析对象对请求结果进行解析,得到解析结果,在进行解析时,第一目标解析对象从请求结果中解析出对应的时间戳,该时间戳为ADB守护进程执行完成性能数据获取请求得到请求结果的时间戳。
在一个实施例中,第一线程得到解析结果后,可直接将解析结果确定为目标性能数据获取请求对应的目标性能数据,将该目标性能数据写入与该目标处理对象绑定的第二消息队列中。
上述实施例中,通过一级索引列表和二级索引列表,第一线程可以快速地确定目标处理对象和第一目标解析对象,从实提高对请求结果的解析效率。
在一个实施例中,如图5所示,当性能数据获取请求存在对应的关联性能数据获取请求时,第一线程对请求结果进行解析的步骤具体包括:
S502,第一线程根据功能类型标识遍历预先建立的一级索引列表,从一级索引列表中确定一级目标索引项,将一级目标索引项对应的处理对象确定为目标处理对象。
S504,第一线程根据第一请求类型标识从一级目标索引项对应的二级索引列表中确定二级目标索引项,将二级目标索引项对应的解析对象确定为第一目标解析对象。
S506,第一线程通过目标处理对象调用第一目标解析对象对请求结果进行解析,得到解析结果。
S508,第一线程接收关联性能数据获取请求对应的关联请求结果。
S510,第一线程根据第二请求类型标识从一级目标索引项对应的二级索引列表中确定二级关联目标索引项,将二级关联目标索引项对应的解析对象确定为第二目标解析对象。
其中,目标性能数据获取请求对应的关联性能数据获取请求指的是与目标性能数据获取请求相互关联以共同获取某个性能指标对应的性能数据的请求。相互关联的两个性能数据获取请求通常属于同一个功能类型。例如,在获取CPU占比时,需要获取***CPU以及进程CPU,则获取***CPU的性能数据获取请求与获取进程CPU的性能数据获取请求为相互关联的请求。
本实施例中,当目标性能数据获取请求存在对应的关联性能数据获取请求时,第一线程会调用目标处理对象检测是否接收到关联性能数据获取请求对应的请求结果,也就是关联请求结果。当接收到关联请求结果,第一线程需要对关联请求结果进行解析,由于关联性能数据获取请求与目标性能数据获取请求同属于一个功能分类,其对应的一级目标索引项及目标处理对象也是相同的,因此,第一线程可根据目标性能数据获取请求中携带的第二请求类型标识从一级目标索引项对应的二级索引列表中确定二级关联目标索引项,这里的二级关联目标索引项特指关联性能数据获取请求对应的二级目标索引项,用以区分目标性能数据获取请求对应的二级目标索引项。进一步,第一线程可根据二级关联目标索引项确定对应的第二解析对象。
S512,第一线程通过目标处理对象调用第二目标解析对象对关联请求结果进行解析,得到关联请求结果。
S514,第一线程调用目标处理对象根据解析结果及关联解析结果得到目标性能数据,将目标性能数据写入目标处理对象对应的第二消息队列。
具体地,第一线程在得到解析结果和关联解析结果时,可根据这两个解析结果执行预设的操作从而得到目标性能数据。例如,当需要获取CPU占比时,由于CPU占比为进程CPU数据和***CPU数据相除,若解析结果为进程CPU数据、关联解析结果为***CPU数据,则第一线程可以将解析结果与关联解析结果进行相除以得到目标性能数据。由于目标处理对象预先绑定了对应的消息队列,第一线程在得到目标性能数据后,可以将目标性能数据写入目标处理对象对应的消息队列中。
上述实施例中,当目标性能数据获取请求存在对应的关联性能数据获取请求,第一线程可根据一级索引和二级索引分别确定两个请求对应的处理对象和解析对象,快速地对解析结果进行解析,提高了解析效率。
在一个实施例中,如图6所示,在第一线程监听性能数据获取请求之前,该方法还包括:
S602,启动进程监控线程。
S604,进程监控线程通过服务启用接口向目标服务线程组发送进程标识获取请求;进程标识获取请求用于指示目标服务线程组获取终端对应的目标进程的进程标识。
其中,目标服务线程组指的是用于获取进程标识及用户标识的服务器线程组。在一个实施例中,进程监控线程可以在发送的进程标识获取请求中携带线程组标识以指定某个服务线程组作为目标服务器线程组。
进程监控线程通过服务服务启用接口向目标服务线程组发送进程标识获取请求后,该服务线程组中的第一线程首先将进程标识获取请求写入其对应的第一消息队列中,同时执行循环检测,若当前没有正在执行的请求时,则从消息队列中读取请求,当读取到该进程标识获取请求时,将其写入预先创建的ADB客户端中,ADB客户端根据该进程标识获取请求去获取目标进程对应的进程标识,此处,DB客户端获取进程标识的具体过程,可参照上文实施例中ADB客户端获取请求结果的过程类似,本申请在此不赘述。同时该第一线程会向该服务器线程组中的第二线程发送进程标识读取请求,第二线程根据该进程标识读取请求去ADB客户端中读取对应的进程标识,并写入其对应的第二消息队列中。
S606,当在目标服务线程组对应的消息队列中读取到进程标识时,进程监控线程根据进程标识生成用户标识获取请求,并通过服务启用接口向目标服务线程组发送用户标识获取请求;用户标识获取请求用于指示目标服务线程组获取目标进程对应的用户标识。
具体地,进程监控线程可以从目标服务线程组对应的第二消息队列读取到进程标识,根据该进程标识生成用户标识获取请求,并通过服务启用接口向目标服务线程组发送该用户标识获取请求,目标服务线程组根据该用户标识获取请求获取目标进程的用户标识,其中,目标服务线程组获取目标进程的用户标识的过程与其获取进程标识的过程类似,可参考上文的描述,本申请在此不赘述。目标进程的用户标识用于对终端当前使用目标进程的用户进行唯一标识。
S608,进程监控线程从目标服务线程组对应的消息队列中读取用户标识;用户标识用于生成目标性能数据获取请求,目标性能数据获取请求用于获取网络数据。
具体地,进程监控线程可以从目标服务线程组对应的第二消息队列中读取到用户标识,在读取到用户标识后。当需要采集目标进程的网络数据时,计算机设备可根据该用户标识生成用户获取网络数据的目标性能数据获取请求。
上述实施例中,通过启动监控线程获取进程数据及用户标识,在需要获取网络数据时,可通过获取到的用户标识来生成获取网络数据的目标性能数据获取请求。
如图7所示,为一个实施例中,性能数据采集方法对应的服务结构和通信流程图。本实施例中,服务线程组为ShellCmd线程组,第一线程为AdbShellThread线程(以下简称shell线程),第二线程为AdbShellCmdReaderThread(以下简称Reader线程),服务启用接口由AdbShellutil模块提供,该模块可对ShellCmd线程组进行管理。参照图7,外部调用程序可通过进程监控线程及性能数据采集线程发送命令与ShellCmd线程组进行通信,shell线程可用于创建ADB客户端进程、写命令到ADB客户端进程、发送结结果读取请求到Reader线程以及获取命令结果并写入消息队列,Reader线程用于处理结果读取请求,以及从ABD客户端进程读取命令结果。ShellCmd线程组获取的命令结果可以调用对应的handler/callbacks进行解析处理,处理完后写入消息队列,最终进程监控线程及采集线程可以从该消息队列中读取命令结果。其中,ProcCPUHandler/Callbacks与CPU数据对应,ProcMemHandler/Callbacks与内存数据对应,ProcNetHandler/Callbacks与网络数据对应,ProcHandler/Callbacks根据需要可以是上述三者中的其中一种,当然,也可以是其他的。
如图8所示,为一个实施例中,性能数据采集方法对应的服务通信时序图,参照图8,本实施例中,性能数据采集方法包括以下步骤:
1)服务启动步骤
1.1、外部调用程序初始化参数,发送携带设备标识信息的服务调用请求至AdbShellutil模块;
1.2、AdbShellutil模块将服务调用请求发送至shell线程;
1.3、shell线程创建设备标识信息对应的ADB客户端,并将创建的ADB客户端的进程对象标识发送至Reader线程;
1.4、Reader线程对进程对象标识进行存储,并返回服务调用成功通知。
2)命令执行步骤
2.1、外部调用程序发送命令至AdbShellutil模块;
2.2、AdbShellutil模块发送命令至shell线程;
2.3、shell线程将命令写入ADB客户端进程的标准输入;
2.4、shell线程向Reader线程发送结果读取请求;
2.5、Reader线程从ADB客户端进程的标准输出读取命令结果;
2.6、将命令结果返回至shell线程,shell线程将命令结果返回至外部调用程序。
3)服务停止步骤
3.1、外部调用程序发送携带设备标识信息的服务结束请求至AdbShellutil模块;
3.2、AdbShellutil模块将服务结束请求发送至shell线程;
3.3、shell线程将服务结束请求发送至Reader线程;
3.4、Reader线程去除设备标识信息对应的ADB客户端进程对象的引用;
3.5、Reader线程向shell线程返回服务结果通知;
3.6、shell线程向ADB客户端进程的标准输入写入服务结束请求,并通过AdbShellutil模块提供的服务停止接口向调用程序返回服务结束通知。
可以理解的是,本实施例中,AdbShellutil模块提供的服务启用接口和服务停止接口设计为同步的,保证了与外部调用程序时序的一致性;服务启用接口同步的原则是启动结束,所有线程均已能准备好接受命令请求;服务停止接口同步的原则是所有线程均已停止服务,并保证停止之前所有的命令请求均已执行完毕,不存在命令请求发送后没有执行完的情况。其中,停止服务因业务需求而定,有时仅代表暂停,可随时在不需要重新配置的情况下重新开始服务。
在一个具体的实施例中,提供了一种性能数据采集方法,包括以下步骤:
1、创建至少一个服务线程组,服务线程组包括第一线程及第二线程;
2、启动性能数据采集线程;
3、性能数据采集线程通过服务启用接口向第一线程发送携带设备标识信息的服务调用请求;
4、第一线程根据设备标识信息创建调试桥客户端,并将成功创建的调试桥客户端对应的进程对象标识发送至第二线程;
5、第二线程收到进程对象标识后,通过服务启用接口向性能数据采集线程返回服务调用成功通知;
6、性能数据采集线程通过服务启用接口向服务线程组发送性能数据获取请求;
7、第一线程监听到性能数据获取请求后,将性能数据获取请求缓存到对应的第一消息队列;
8、第一线程执行循环检测,判断当前是否存在正在执行的性能数据获取请求,若否,则从第一消息队列中读取性能数据获取请求,将读取到的性能数据获取请求作为目标性能数据获取请求;若是,则进行等待;
其中,目标性能数据获取请求携带请求标识、功能类型标识、第一请求类型标识;目标性能数据获取请求中包括特殊字符串标记请求;特殊字符串标记请求用于指示调试桥客户端获取特殊字符串;目标性能数据获取请求存在对应的关联性能数据获取请求,关联性能数据获取请求携带第二请求类型标识;
9、第一线程将目标性能数据获取请求写入预先创建的调试桥客户端,并向第二线程发送结果读取请求;调试桥客户端用于根据性能数据获取请求获取对应的请求结果;
10、第二线程在接收到结果读取请求后,从调试桥客户端读取字符串,当读取到特殊字符串标记请求对应的字符串时,第二线程将截止至特殊字符串的所有字符串确定为结果读取请求对应的请求结果,将请求结果发送至第一线程;
11、第一线程获取请求结果对应的请求标识,将获取的请求标识与目标性能数据获取请求携带的请求标识进行比对,当比对一致时,进入步骤12;当比对不一致时,丢弃请求结果;
12、第一线程根据功能类型标识遍历预先建立的一级索引列表,从一级索引列表中确定一级目标索引项,将一级目标索引项对应的处理对象确定为目标处理对象;
13、第一线程根据第一请求类型标识从一级目标索引项对应的二级索引列表中确定二级目标索引项,将二级目标索引项对应的解析对象确定为第一目标解析对象;
14、第一线程通过目标处理对象调用第一目标解析对象对请求结果进行解析,得到解析结果;
15、第一线程接收关联性能数据获取请求对应的关联请求结果;
16、第一线程根据第二请求类型标识从一级目标索引项对应的二级索引列表中确定二级关联目标索引项,将二级关联目标索引项对应的解析对象确定为第二目标解析对象;
17、第一线程通过目标处理对象调用第二目标解析对象对关联请求结果进行解析,得到关联请求结果;
18、第一线程调用目标处理对象根据解析结果及关联解析结果得到目标性能数据,将目标性能数据写入目标处理对象对应的第二消息队列。
19、性能数据采集线程从第二消息队列读取目标性能数据。
图2-图6为一个实施例中性能数据采集方法的流程示意图。应该理解的是,虽然图2-图6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图9所示,提供了一种性能数据采集装置,包括:
创建模块902,用于创建至少一个服务线程组,服务线程组包括第一线程904及第二线程906;
第一线程904用于监听性能数据获取请求,将性能数据获取请求缓存到对应的第一消息队列;
第一线程904还用于从第一消息队列中读取性能数据获取请求,将读取到的性能数据获取请求作为目标性能数据获取请求;
第一线程904还用于将目标性能数据获取请求写入预先创建的调试桥客户端,并向第二线程906发送结果读取请求;调试桥客户端用于根据性能数据获取请求获取对应的请求结果;
第二线程906用于在接收到结果读取请求后,从调试桥客户端读取请求结果;
第一线程904还用于接收第二线程906发送的请求结果;请求结果用于确定目标性能数据获取请求对应的目标性能数据。
上述性能数据采集装置,由于第一线程在监听到性能数据获取请求后,可通过第一消息队列对性能数据获取请求进行缓存,并可以不断地从该消息队列中读取性能数据获取请求写入预先创建的调试桥客户端,这样,调试客户端在创建后,可以持续提供命令执行服务,不需要像传统技术那样,执行完一次命令后即被销毁,从而避免了频繁的创建和销毁调试桥客户端进程,节省了计算机***资源。
进一步,由于设置了两个线程,两个线程分工合作,由第一线程发送读取性能数据获取请求、第二线程来异步读取对应的请求结果,相较于传统技术中对ADB客户端的同步调用,节省了对请求结果的等待时间,可以大大提高性能数据的采集效率。
在一个实施例中,该装置还包括:第一启动模块,用于启动性能数据采集线程;性能数据采集线程用于通过服务启用接口向第一线程发送携带设备标识信息的服务调用请求;第一线程还用于根据设备标识信息创建调试桥客户端,并将成功创建的调试桥客户端对应的进程对象标识发送至第二线程;第二线程还用于收到进程对象标识后,返回服务调用成功通知。
在一个实施例中,第二线程还用于从调试桥客户端读取字符串,当读取到特殊字符串时,将截止至特殊字符串的所有字符串确定为结果读取请求对应的请求结果。
在一个实施例中,第一线程还用于获取请求结果对应的请求标识,将获取的请求标识与目标性能数据获取请求携带的请求标识进行比对,当比对一致时,对请求结果进行解析,并将解析结果写入对应的第二消息队列中,当比对不一致时,丢弃请求结果。
在一个实施例中,目标性能数据获取请求携带功能类型标识和第一请求类型标识;第一线程还用于根据功能类型标识遍历预先建立的一级索引列表,从一级索引列表中确定一级目标索引项,将一级目标索引项对应的处理对象确定为目标处理对象,根据第一请求类型标识从一级目标索引项对应的二级索引列表中确定二级目标索引项,将二级目标索引项对应的解析对象确定为第一目标解析对象,通过目标处理对象调用第一目标解析对象对请求结果进行解析,得到解析结果,根据解析结果确定目标性能数据,将目标性能数据写入目标处理对象对应的第二消息队列。
在一个实施例中,目标性能数据获取请求存在对应的关联性能数据获取请求,关联性能数据获取请求携带第二请求类型标识;第一线程还用于接收关联性能数据获取请求对应的关联请求结果,根据第二请求类型标识从一级目标索引项对应的二级索引列表中确定二级关联目标索引项,将二级关联目标索引项对应的解析对象确定为第二目标解析对象,通过目标处理对象调用第二目标解析对象对关联请求结果进行解析,得到关联请求结果,调用目标处理对象根据解析结果及关联解析结果得到目标性能数据,将目标性能数据写入目标处理对象对应的第二消息队列。
在一个实施例中,该装置还包括:第二启动模块,用于启动进程监控线程;进程监控线程用于通过服务启用接口向目标服务线程组发送进程标识获取请求;进程标识获取请求用于指示目标服务线程组获取终端对应的目标进程的进程标识;当在目标服务线程组对应的消息队列中读取到进程标识时,根据进程标识生成用户标识获取请求,并通过服务启用接口向目标服务线程组发送用户标识获取请求;用户标识获取请求用于指示目标服务线程组获取目标进程对应的用户标识;从目标服务线程组对应的消息队列中读取用户标识;用户标识用于生成目标性能数据获取请求,目标性能数据获取请求用于获取网络数据。
图10示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的计算机设备110。如图10所示,该计算机设备包括通过***总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作***,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现性能数据采集方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行性能数据采集方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的性能数据采集装置可以实现为一种计算机程序的形式,计算机程序可在如图10所示的计算机设备上运行。计算机设备的存储器中可存储组成该性能数据采集装置的各个程序模块,比如,图9所示的创建模块、第一线程和第二线程。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的性能数据采集方法中的步骤。
例如,图10所示的计算机设备可以通过如图9所示的性能数据采集装置中的创建模块执行步骤S202。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述性能数据采集方法的步骤。此处性能数据采集方法的步骤可以是上述各个实施例的XX方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述性能数据采集方法的步骤。此处性能数据采集方法的步骤可以是上述各个实施例的性能数据采集方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指示相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种性能数据采集方法,包括:
创建至少一个服务线程组,所述服务线程组包括第一线程及第二线程;
所述第一线程监听性能数据获取请求,将所述性能数据获取请求缓存到对应的第一消息队列;
所述第一线程从所述第一消息队列中读取性能数据获取请求,将读取到的性能数据获取请求作为目标性能数据获取请求;
所述第一线程将所述目标性能数据获取请求写入预先创建的调试桥客户端,并向所述第二线程发送结果读取请求;所述调试桥客户端用于根据所述性能数据获取请求获取对应的请求结果;
所述第二线程在接收到所述结果读取请求后,从所述调试桥客户端读取所述请求结果;
所述第一线程接收所述第二线程发送的所述请求结果;所述请求结果用于确定所述目标性能数据获取请求对应的目标性能数据。
2.根据权利要求1所述的方法,其特征在于,在所述第一线程监听性能数据获取请求之前,还包括:
启动性能数据采集线程;
所述性能数据采集线程通过服务启用接口向所述第一线程发送携带设备标识信息的服务调用请求;
所述第一线程根据所述设备标识信息创建调试桥客户端,并将成功创建的调试桥客户端对应的进程对象标识发送至所述第二线程;
所述第二线程收到进程对象标识后,返回服务调用成功通知。
3.根据权利要求1所述的方法,其特征在于,所述目标性能数据获取请求中包括特殊字符串标记请求;所述特殊字符串标记请求用于获取特殊字符串;所述从所述调试桥客户端读取所述请求结果,包括:
所述第二线程从调试桥客户端读取字符串;
当读取到所述特殊字符串时,所述第二线程将截止至所述特殊字符串的所有字符串确定为所述结果读取请求对应的请求结果。
4.根据权利要求1所述的方法,其特征在于,所述目标性能数据获取请求携带请求标识;在所述第一线程接收所述第二线程发送的所述请求结果之后,还包括:
所述第一线程获取所述请求结果对应的请求标识,将获取的所述请求标识与所述目标性能数据获取请求携带的请求标识进行比对;
当比对一致时,所述第一线程对所述请求结果进行解析,并将解析结果写入对应的第二消息队列中;
当比对不一致时,所述第一线程丢弃所述请求结果。
5.根据权利要求1所述的方法,其特征在于,所述目标性能数据获取请求携带功能类型标识和第一请求类型标识;在所述第一线程接收所述第二线程发送的所述请求结果之后,还包括:
所述第一线程根据所述功能类型标识遍历预先建立的一级索引列表,从所述一级索引列表中确定一级目标索引项,将所述一级目标索引项对应的处理对象确定为目标处理对象;
所述第一线程根据所述第一请求类型标识从所述一级目标索引项对应的二级索引列表中确定二级目标索引项,将所述二级目标索引项对应的解析对象确定为第一目标解析对象;
所述第一线程通过所述目标处理对象调用所述第一目标解析对象对所述请求结果进行解析,得到解析结果;
所述第一线程根据所述解析结果确定所述目标性能数据,将所述目标性能数据写入所述目标处理对象对应的第二消息队列。
6.根据权利要求5所述的方法,其特征在于,所述目标性能数据获取请求存在对应的关联性能数据获取请求,所述关联性能数据获取请求携带第二请求类型标识;所述第一线程根据所述解析结果确定所述目标性能数据,将所述目标性能数据写入所述目标处理对象对应的第二消息队列之前,还包括:
所述第一线程接收所述关联性能数据获取请求对应的关联请求结果;
所述第一线程根据所述第二请求类型标识从所述一级目标索引项对应的二级索引列表中确定二级关联目标索引项,将所述二级关联目标索引项对应的解析对象确定为第二目标解析对象;
所述第一线程通过所述目标处理对象调用所述第二目标解析对象对所述关联请求结果进行解析,得到关联请求结果;
所述第一线程根据所述解析结果确定所述目标性能数据,将所述目标性能数据写入所述目标处理对象对应的第二消息队列,包括:
所述第一线程调用所述目标处理对象根据所述解析结果及所述关联解析结果得到目标性能数据,将所述目标性能数据写入所述目标处理对象对应的第二消息队列。
7.根据权利要求1至6中任一项所述的方法,其特征在于,在所述第一线程监听性能数据获取请求之前,还包括:
启动进程监控线程;
所述进程监控线程通过服务启用接口向目标服务线程组发送进程标识获取请求;所述进程标识获取请求用于指示目标服务线程组获取终端对应的目标进程的进程标识;
当在所述目标服务线程组对应的消息队列中读取到所述进程标识时,所述进程监控线程根据所述进程标识生成用户标识获取请求,并通过服务启用接口向目标服务线程组发送所述用户标识获取请求;所述用户标识获取请求用于指示所述目标服务线程组获取所述目标进程对应的用户标识;
所述进程监控线程从所述目标服务线程组对应的消息队列中读取所述用户标识;所述用户标识用于生成目标性能数据获取请求,所述目标性能数据获取请求用于获取网络数据。
8.一种性能数据采集装置,其特征在于,所述装置包括:
创建模块,用于创建至少一个服务线程组,所述服务线程组包括第一线程及第二线程;
所述第一线程用于监听性能数据获取请求,将所述性能数据获取请求缓存到对应的第一消息队列;
所述第一线程还用于从所述第一消息队列中读取性能数据获取请求,将读取到的性能数据获取请求作为目标性能数据获取请求;
所述第一线程还用于将所述目标性能数据获取请求写入预先创建的调试桥客户端,并向所述第二线程发送结果读取请求;所述调试桥客户端用于根据所述性能数据获取请求获取对应的请求结果;
所述第二线程用于在接收到所述结果读取请求后,从所述调试桥客户端读取所述请求结果;
所述第一线程还用于接收所述第二线程发送的所述请求结果;所述请求结果用于确定所述目标性能数据获取请求对应的目标性能数据。
9.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911154521.1A CN111124702B (zh) | 2019-11-22 | 2019-11-22 | 性能数据采集方法、装置和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911154521.1A CN111124702B (zh) | 2019-11-22 | 2019-11-22 | 性能数据采集方法、装置和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124702A true CN111124702A (zh) | 2020-05-08 |
CN111124702B CN111124702B (zh) | 2023-03-21 |
Family
ID=70496507
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911154521.1A Active CN111124702B (zh) | 2019-11-22 | 2019-11-22 | 性能数据采集方法、装置和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124702B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813533A (zh) * | 2020-09-11 | 2020-10-23 | 腾讯科技(深圳)有限公司 | 模型实例化的动态管理方法和装置及存储介质 |
CN111859082A (zh) * | 2020-05-27 | 2020-10-30 | 伏羲科技(菏泽)有限公司 | 标识解析方法及装置 |
CN112019452A (zh) * | 2020-08-21 | 2020-12-01 | 苏州浪潮智能科技有限公司 | 一种业务需求的处理方法、***及相关装置 |
CN112631891A (zh) * | 2021-01-05 | 2021-04-09 | 网易(杭州)网络有限公司 | 性能剖析方法及装置、电子设备、存储介质 |
CN113157467A (zh) * | 2021-05-07 | 2021-07-23 | 瑞斯康达科技发展股份有限公司 | 一种多进程数据输出方法 |
CN113923005A (zh) * | 2021-09-30 | 2022-01-11 | 惠州Tcl移动通信有限公司 | 一种写入数据的方法及*** |
CN115002219A (zh) * | 2022-05-30 | 2022-09-02 | 广州市百果园网络科技有限公司 | 服务调用方法、装置、设备、***、存储介质及产品 |
CN115174296A (zh) * | 2022-05-30 | 2022-10-11 | 青岛海尔科技有限公司 | 设备功能接入方法、装置、存储介质及电子装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808404A (zh) * | 2014-12-31 | 2016-07-27 | 成都鼎桥通信技术有限公司 | 一种基于共享管道的Android设备的调试方法 |
CN106598706A (zh) * | 2015-10-15 | 2017-04-26 | 五八同城信息技术有限公司 | 一种提高服务器的稳定性的方法、装置及服务器 |
CN107872398A (zh) * | 2017-06-25 | 2018-04-03 | 平安科技(深圳)有限公司 | 高并发数据处理方法、装置及计算机可读存储介质 |
WO2018108041A1 (zh) * | 2016-12-13 | 2018-06-21 | 腾讯科技(深圳)有限公司 | 一种远程调试方法及装置、计算机存储介质 |
CN108595312A (zh) * | 2017-12-29 | 2018-09-28 | 瑞庭网络技术(上海)有限公司 | 一种模拟用户行为的性能自动化方法及装置 |
CN109753414A (zh) * | 2017-11-01 | 2019-05-14 | 阿里巴巴集团控股有限公司 | 性能数据的采集方法、展示方法、电子设备和客户端 |
CN109766253A (zh) * | 2018-12-15 | 2019-05-17 | 平安证券股份有限公司 | 一种性能数据发送方法、装置、计算机设备及存储介质 |
CN109840209A (zh) * | 2019-01-18 | 2019-06-04 | 深圳壹账通智能科技有限公司 | 应用性能数据采集方法、终端、计算机设备及存储介质 |
CN110389872A (zh) * | 2018-04-16 | 2019-10-29 | 腾讯科技(深圳)有限公司 | 一种数据采集方法、装置以及相关设备 |
CN110457211A (zh) * | 2019-07-23 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 脚本性能测试方法、装置和设备及计算机存储介质 |
-
2019
- 2019-11-22 CN CN201911154521.1A patent/CN111124702B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105808404A (zh) * | 2014-12-31 | 2016-07-27 | 成都鼎桥通信技术有限公司 | 一种基于共享管道的Android设备的调试方法 |
CN106598706A (zh) * | 2015-10-15 | 2017-04-26 | 五八同城信息技术有限公司 | 一种提高服务器的稳定性的方法、装置及服务器 |
WO2018108041A1 (zh) * | 2016-12-13 | 2018-06-21 | 腾讯科技(深圳)有限公司 | 一种远程调试方法及装置、计算机存储介质 |
CN107872398A (zh) * | 2017-06-25 | 2018-04-03 | 平安科技(深圳)有限公司 | 高并发数据处理方法、装置及计算机可读存储介质 |
CN109753414A (zh) * | 2017-11-01 | 2019-05-14 | 阿里巴巴集团控股有限公司 | 性能数据的采集方法、展示方法、电子设备和客户端 |
CN108595312A (zh) * | 2017-12-29 | 2018-09-28 | 瑞庭网络技术(上海)有限公司 | 一种模拟用户行为的性能自动化方法及装置 |
CN110389872A (zh) * | 2018-04-16 | 2019-10-29 | 腾讯科技(深圳)有限公司 | 一种数据采集方法、装置以及相关设备 |
CN109766253A (zh) * | 2018-12-15 | 2019-05-17 | 平安证券股份有限公司 | 一种性能数据发送方法、装置、计算机设备及存储介质 |
CN109840209A (zh) * | 2019-01-18 | 2019-06-04 | 深圳壹账通智能科技有限公司 | 应用性能数据采集方法、终端、计算机设备及存储介质 |
CN110457211A (zh) * | 2019-07-23 | 2019-11-15 | 腾讯科技(深圳)有限公司 | 脚本性能测试方法、装置和设备及计算机存储介质 |
Non-Patent Citations (3)
Title |
---|
刘遂辉: "安卓Robotium自动化测试框架的改进与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
周一川: "基于Android GUI控件的自动化测试***设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
某杰: "Android性能测试(内存、cpu、fps、流量、GPU、电量)——adb篇", 《HTTPS://WWW.JIANSHU.COM/P/6C0CFC25B038》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111859082A (zh) * | 2020-05-27 | 2020-10-30 | 伏羲科技(菏泽)有限公司 | 标识解析方法及装置 |
CN112019452A (zh) * | 2020-08-21 | 2020-12-01 | 苏州浪潮智能科技有限公司 | 一种业务需求的处理方法、***及相关装置 |
CN111813533A (zh) * | 2020-09-11 | 2020-10-23 | 腾讯科技(深圳)有限公司 | 模型实例化的动态管理方法和装置及存储介质 |
CN111813533B (zh) * | 2020-09-11 | 2020-12-11 | 腾讯科技(深圳)有限公司 | 模型实例化的动态管理方法和装置及存储介质 |
CN112631891A (zh) * | 2021-01-05 | 2021-04-09 | 网易(杭州)网络有限公司 | 性能剖析方法及装置、电子设备、存储介质 |
CN113157467B (zh) * | 2021-05-07 | 2023-07-04 | 瑞斯康达科技发展股份有限公司 | 一种多进程数据输出方法 |
CN113157467A (zh) * | 2021-05-07 | 2021-07-23 | 瑞斯康达科技发展股份有限公司 | 一种多进程数据输出方法 |
CN113923005A (zh) * | 2021-09-30 | 2022-01-11 | 惠州Tcl移动通信有限公司 | 一种写入数据的方法及*** |
CN113923005B (zh) * | 2021-09-30 | 2024-04-09 | 惠州Tcl移动通信有限公司 | 一种写入数据的方法及*** |
CN115002219A (zh) * | 2022-05-30 | 2022-09-02 | 广州市百果园网络科技有限公司 | 服务调用方法、装置、设备、***、存储介质及产品 |
CN115174296A (zh) * | 2022-05-30 | 2022-10-11 | 青岛海尔科技有限公司 | 设备功能接入方法、装置、存储介质及电子装置 |
CN115002219B (zh) * | 2022-05-30 | 2023-07-25 | 广州市百果园网络科技有限公司 | 服务调用方法、装置、设备、***、存储介质及产品 |
CN115174296B (zh) * | 2022-05-30 | 2024-03-22 | 青岛海尔科技有限公司 | 设备功能接入方法、装置、存储介质及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111124702B (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124702B (zh) | 性能数据采集方法、装置和计算机可读存储介质 | |
CN107665233B (zh) | 数据库数据处理方法、装置、计算机设备和存储介质 | |
WO2020186809A1 (zh) | 基于大数据平台的hive任务调度方法、装置、设备及存储介质 | |
CN110209652B (zh) | 数据表迁移方法、装置、计算机设备和存储介质 | |
CN109753418B (zh) | 性能测试方法、装置、计算机设备和存储介质 | |
CN108965383B (zh) | 文件同步方法、装置、计算机设备和存储介质 | |
WO2018054200A1 (zh) | 文件读取方法和装置 | |
WO2018120720A1 (zh) | 客户端程序的测试错误定位方法、电子装置及存储介质 | |
CN105607986A (zh) | 用户行为日志数据采集方法及装置 | |
CN110378681B (zh) | 账户资源转移路径的确定方法、装置、设备及存储介质 | |
CN109981715B (zh) | 一种会话管理的方法及装置 | |
CN110162453B (zh) | 测试方法、装置、计算机可读存储介质和计算机设备 | |
CN110765288B (zh) | 一种图像信息同步方法、装置、***及存储介质 | |
CN111831542B (zh) | Api应用调测方法及装置、存储介质 | |
CN111475324A (zh) | 日志信息的分析方法、装置、计算机设备和存储介质 | |
CN108733545B (zh) | 一种压力测试方法及装置 | |
WO2018177202A1 (zh) | 测试结果生成方法、装置、计算机设备和存储介质 | |
CN109788251B (zh) | 视频处理方法、装置及存储介质 | |
CN111125748A (zh) | 越权查询的判断方法、装置、计算机设备和存储介质 | |
CN112948124A (zh) | 一种加速任务处理方法、装置、设备及可读存储介质 | |
CN111176986B (zh) | 线程脚本调试方法、装置、计算机设备和存储介质 | |
CN112416762A (zh) | Api测试方法及装置、设备、计算机可读存储介质 | |
CN109474386B (zh) | 信令跟踪方法、***、网元设备和存储介质 | |
CN111694734A (zh) | 软件接口校验方法、装置及计算机设备 | |
CN111459796A (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 |